c语言的小程序求解

216关注698浏览

题:现有21个小球,两人轮流取,每人每次可以取走1~4个小球,不可多取,也不可少取,谁取到最后一个小球就算输了,编程序实现这一过程。
题就是这样的,我不会做,哪位大哥能帮我分析一下,或者把代码贴出来都可以,我给你们追分。

展开全部
收起
11回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • LanceCheng

    20人对此回答表示赞同

    第二个取的人是赢家。其策略如下:若对方取n (1≤n≤4)个球,自已就取5-n (1≤5-n≤4)个球,因为21-4×5=1,所以第一个肯定会拿到最后一个球。
    展开
    20
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Christian

    19人对此回答表示赞同

    #include <stdio.h>
    #include<stdlib.h>
    #include<time.h>

    int get(int m,int MAX,int all)
    {
    int i = rand()%MAX+1;
    if(i>all)
    i=all;
    if(m>0)
    printf("A get %d , %d left\
    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Jina金呐

    18人对此回答表示赞同

    这个可能性太多了 就拿取法来说就相当的多
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Cody

    18人对此回答表示赞同

    这个如果想简单的话就是凑5,不管电脑取多少,你取的跟他加起来是五就可以
    复杂点就要有算法,模拟处理,相当于游戏了,每人一步,有经典算法的
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Aaliyah

    15人对此回答表示赞同

    /*现有21个小球,两人轮流取,每人每次可以取走1~4个小球,不可多取,
    也不可少取,谁取到最后一个小球就算输了,编程序实现这一过程。
    */

    #include<stdio.h>
    #define S 21
    void main()
    {
    int first,last,s;//先手,后手
    s=S;
    printf("游戏规则:现有21个小球,两人轮流取,\n每人每次可以取走1~4
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Claire

    12人对此回答表示赞同

    两人轮流取,这一过程是你自己输入还是程序自己随机产生???
    展开
    12
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 上官村

    8人对此回答表示赞同

    你说的这个是著名的火柴游戏吗??
    这个问题是谁先谁赢哇!先手先取走1, 然后依次给对方留下 20 15 10 5 , 这样就能确保自己取到最后一个.

    #include <stdio.h>
    int main()
    {
    int n, t = 21, a = 1;
    printf("计算机是先手\n");
    do
    {
    printf("计算机取走%d
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 胖宅

    8人对此回答表示赞同

    双人对战,在VC验证OK
    #include<stdio.h>
    void main()
    {
    int a=21,i,left;
    printf("游戏开始:\n");
    left=a;
    while(a>0)
    {
    do
    {
    printf("轮到A取球了,请选择:(你可以取1~%d个球)? \t ",a>4?4:a
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 苯巴比妥

    8人对此回答表示赞同

    #include<stdio.h>
    void main()
    {
    int remain_number=21;
    int Aget_number=0;
    int Bget_number=0;
    int people_number=0;
    while(remain_number!=1)
    {
    printf("please input the number of the balls
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 龙骑士

    6人对此回答表示赞同

    要求不太明确
    如果是随机取,输赢结果也就是随机的,没什么意义
    是不是想说应该第几个取、怎么取才能保证自己老赢啊? 追问
    展开
    6
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 羊来了

    4人对此回答表示赞同

    根本就不用模拟,因为这个是非合作博弈问题,通过数学的方法就能证明,只要第二个人不傻一定会赢。具体策略就是:第二个人总是使得剩余球的总数位5n+1, 因为21也是一个5n+1数,而5n+1的好处就是,无论第一个人怎么取k个,第二个人都有一个方案去5-k个,使得余数是5n+1型,第一个人在5n+1的情况下永远不可能剩下一个球给第二个人。
    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部