候帅 2023-07-12 22:35 采纳率: 20%
浏览 174
已结题

关于猫抓老鼠的概率,如何解决?

猫抓老鼠的概率
【题目描述】
有这样一个游戏:在一个 n*n 的格子棋盘里,n 是奇数;有两种棋子,一个是只
能横向移动的棋子猫,一个是可以上下左右移动的棋子老鼠。假设老鼠在棋盘的正
中央,第一步老鼠将进行上下左右的随机移动。棋子猫在从棋盘的中间行的最左边
向棋盘的最右边移动,棋子猫每次移动只能是从左到右移动一步,第一步是猫位于
棋盘的中间行的最左边格子。请问:在猫移动到棋盘外面前,会有多大概率抓到老
鼠?
【输入格式】
输入一个大于 1 的奇数 n,表示棋盘的大小。
【输出格式】
棋子猫抓到棋子老鼠的概率。(小数四舍五入保留 4 位有效数字)
【样例输入】(测试数据不包含本样例)
3
【样例输出】
0.6667

  • 写回答

3条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-14 03:10
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7755985
    • 你也可以参考下这篇文章:小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱? 输入爸爸给小瑜的钱n元
    • 除此之外, 这篇博客: 环形捡豆子中的 环形路上有N个点,每个点上有若干颗豆子,小明现在来捡一圈豆子,规则是不能向回捡豆子,且一次 需要捡起这个点的所有的豆子,如果每到奇数颗豆子就不能捡下一个点的豆子,如果每到偶数颗豆子就不能捡下两个点的豆子,求一圈可以捡起的豆子的数量最大值。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      输入

      每一行整数N,表示环形路上N个点
      第二行N个整数,用空格间隔,表示每个点上豆子颗数。

      输出

      一个整数,表示可以捡起的豆子数量的最大值

      样例输入

      3
      2 3 2

      样例输出

      5

      result:

      #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;
      }

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月23日
  • 已采纳回答 7月15日
  • 请采纳用户回复 7月12日
  • 创建了问题 7月12日