A27375. 在 AI 下棋程序中,计算猫抓老鼠游戏的概率
填空题
较易
知识点
题目描述
在 AI 下棋程序中,计算猫抓老鼠游戏的概率

题目描述
有这样一个游戏:在一个 n*n 的格子棋盘里,n 是奇数;有两种棋子,一个是只能横向移动的棋子猫,一个是可以上下左右移动的棋子老鼠。假设老鼠在棋盘的正中央,第一步老鼠将进行上下左右的随机移动。棋子猫在从棋盘的中间行的最左边向棋盘的最右边移动,棋子猫每次移动只能是从左到右移动一步,第一步是猫位于棋盘的中间行的最左边格子。请问:在猫移动到棋盘外面前,会有多大概率抓到老鼠?
输入格式
输入一个大于 1 的奇数 n,表示棋盘的大小。
输出格式
棋子猫抓到棋子老鼠的概率。(小数四舍五入保留 4 位有效数字)
样例输入
3样例输出
0.6667参考答案
#include <iostream>
#include <cmath>
double calculateProbability(int n) {
// n is odd,老鼠在棋盘的正中央,猫从中间行的最左边开始
int middle = n / 2; // 棋盘的中间行
int half = (n - 1) / 2; // 棋盘的一半
double catMoves = half; // 猫需要移动的步数
double totalMoves = pow(2, half + 1) - 1; // 老鼠可能的移动步数
return catMoves / totalMoves;
}
int main() {
int n;
std::cin >> n;
std::cout.precision(4);
std::cout << std::fixed << calculateProbability(n) << std::endl;
return 0;
}
上一题
下一题