猫抓老鼠的概率
【题目描述】
有这样一个游戏:在一个 n*n 的格子棋盘里,n 是奇数;有两种棋子,一个是只
能横向移动的棋子猫,一个是可以上下左右移动的棋子老鼠。假设老鼠在棋盘的正
中央,第一步老鼠将进行上下左右的随机移动。棋子猫在从棋盘的中间行的最左边
向棋盘的最右边移动,棋子猫每次移动只能是从左到右移动一步,第一步是猫位于
棋盘的中间行的最左边格子。请问:在猫移动到棋盘外面前,会有多大概率抓到老
鼠?
【输入格式】
输入一个大于 1 的奇数 n,表示棋盘的大小。
【输出格式】
棋子猫抓到棋子老鼠的概率。(小数四舍五入保留 4 位有效数字)
【样例输入】(测试数据不包含本样例)
3
【样例输出】
0.6667
关于猫抓老鼠的概率,如何解决?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注不知道你这个问题是否已经解决, 如果还没有解决的话:- 你可以看下这个问题的回答https://ask.csdn.net/questions/7755985
- 你也可以参考下这篇文章:小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱? 输入爸爸给小瑜的钱n元
- 除此之外, 这篇博客: 环形捡豆子中的 环形路上有N个点,每个点上有若干颗豆子,小明现在来捡一圈豆子,规则是不能向回捡豆子,且一次 需要捡起这个点的所有的豆子,如果每到奇数颗豆子就不能捡下一个点的豆子,如果每到偶数颗豆子就不能捡下两个点的豆子,求一圈可以捡起的豆子的数量最大值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
输入
每一行整数N,表示环形路上N个点 第二行N个整数,用空格间隔,表示每个点上豆子颗数。输出
一个整数,表示可以捡起的豆子数量的最大值样例输入
3 2 3 2样例输出
5result:
#include<iostream> #include<vector> using namespace std; vector<int> finList(vector<int> v,int index) { vector<int> temp=v; for (int i=index;i<v.size();++i) { temp[i - index] = v[i]; } for (int j = 0; j < index; ++j) { temp[v.size()-index+j] = v[j]; } return temp; } int _slove(vector<int> v) { int sum = 0; for (int i=0;i<v.size();++i) { sum += v[i]; if (v[i] % 2 != 0) i++; else i = i + 2; } return sum; } int main() { int N, res=0; vector<int> v,temp2; cin >> N; for (int i = 0; i < N; ++i) { int temp; cin >> temp; v.push_back(temp); } for (int i=0;i<v.size();++i) { int temp3; temp2 = finList(v,i); temp3 = _slove(temp2); res = (res>temp3?res:temp3); } cout << res; return 0; }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 5