zoukankan      html  css  js  c++  java
  • 盒子取球C语言 蓝桥杯

    盒子取球方法二今盒子里有 n 个小球,A、B 两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,

    也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。

    我们约定:每个人从盒子中取出的球的数目必须是:1,3,7 或者 8 个。轮到某一方取球时不能弃权!

    A 先取球,然后双方交替取球,直到取完。被迫拿到最后一个球的一方为负方(输方)请编程确定出在双方都

    不判断失误的情况下,对于特定的初始球数,A 是否能赢?程序运行时,从标准输入获得数据,其格式如下:

    先是一个整数 n(n<100),表示接下来有 n 个整数。然后是 n 个整数,每个占一行(整数<10000),

    表示初始球数。程序则输出 n 行,表示 A 的输赢情况(输为 0,赢为 1)。

    分析:当 n==1 时,A一定会输,当n等于3,5时A也会输,n为2,4,8时A必定会赢,由此分析当 n 为 1+

    [1,3,7,8]时,A可以取[1,3,7,8]得一个数,然后将1留给B,也就是说,有些必输得数谁取到谁就会输。当 n为一个必输

    的值加上[1,3,4,8]时A比赢。

    代码如下:

    #include<stdio.h>
    void fun(int *a)
    {
     int b[]={1,3,7,8};
     int i;
     for(i=1;i+8<=1000;i++)//注意此处i的取值,
     {
      if(a[i]==0)
      {
         for(int j=0;j<=3;j++)//根据必输的值找出必赢的值
         a[i+b[j]]=1;
      }
     }
    }
    int main()
    {
     int a[1001]={0};
     int n,m;

    scanf("%d",&n);
     fun(a);
     while(n--)

    {

      scanf("%d",&m);

    printf("%d ",a[m]);

    }

     return 0;
    }

  • 相关阅读:
    关于c#的知识博客
    sql server 查看列备注、类型、字段大小
    oracle 字符串分割函数
    sql server 字符串分割函数
    Microsoft.Office.Interop.Excel.ApplicationClass can not embedded 的问题
    web.xml文件配置
    解决FusionCharts报表中文乱码问题
    oracle树结构查询
    Myeclipse复制项目后部署出错解决方案
    jquery autocomplete参数说明
  • 原文地址:https://www.cnblogs.com/cong12586/p/10574130.html
Copyright © 2011-2022 走看看