测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题