洛无极 发表于 2022-5-29 21:37:32

急求帮助,拿石子问题

一堆个数为n的石子,Alice和Bob轮流取。
Alice一次能取个石子,Bob一次能取个石子。
拿到最后一个石子的人赢。
如果Alice必胜,返回1
如果Bob必胜,返回-1
如果没有人有必胜策略,返回0
用C语言编写,谢谢各位大佬

洛无极 发表于 2022-5-29 21:43:06

示例:
输入:8,3,3 输出:-1
输入:3,4,2 输出:1

jhq999 发表于 2022-5-30 10:31:25

本帖最后由 jhq999 于 2022-5-30 10:51 编辑

洛无极 发表于 2022-5-29 21:43
示例:
输入:8,3,3 输出:-1
输入:3,4,2 输出:1


int main()////////必胜的诀窍是每次给对方剩下对方最大取值加1的整数倍
{
        int n=0,a=0,b=0;
        scanf("%d,%d,%d",&n,&a,&b);
        if(n<=a)printf("a");
        else if(a>b)printf("a");
        else if(a<b)printf("b");
        else
        {
                if(n%(a+1))printf("a");
                else
                        printf("b");
        }
        return 0;
}

洛无极 发表于 2022-5-30 20:29:36

jhq999 发表于 2022-5-30 10:31


兄弟,能按照【1,q】,【1,p】输入,-1,1输出吗?你的能执行,但我萌新,不会改,麻烦你了,谢谢

jhq999 发表于 2022-5-30 21:06:16

洛无极 发表于 2022-5-30 20:29
兄弟,能按照【1,q】,【1,p】输入,-1,1输出吗?你的能执行,但我萌新,不会改,麻烦你了,谢谢


int main()////////必胜的诀窍是每次给对方剩下对方最大取值加1的整数倍
{
      int n=0,a=0,b=0;
      scanf("%d,%d,%d",&n,&a,&b);
      if(n<=a)printf("a");
      else if(a>b)printf("1");
      else if(a<b)printf("-1");
      else
      {
                if(n%(a+1))printf("1");
                else
                        printf("-1");
      }
      return 0;
}

洛无极 发表于 2022-5-30 21:12:06

jhq999 发表于 2022-5-30 21:06


谢了,但这道题不需要定义p、q什么的吗?

洛无极 发表于 2022-5-30 21:14:38

jhq999 发表于 2022-5-30 21:06


而且这个代码,输入3 4 2 ,输出的结果也为-1,我试了其他得数,可能是巧合,但所有输出结果都是-1{:5_104:}

jhq999 发表于 2022-5-30 22:43:31

本帖最后由 jhq999 于 2022-5-30 22:46 编辑

洛无极 发表于 2022-5-30 21:14
而且这个代码,输入3 4 2 ,输出的结果也为-1,我试了其他得数,可能是巧合,但所有输出结果都是-1{:5_10 ...

示例:
输入:8,3,3 输出:-1
输入:3,4,2 输出:1


输入3,4,2不是3 4 2 输入之间的符号要和scanf里的对应
输出是a,你把那个printf("a");改成printf("1");,我忘改了

洛无极 发表于 2022-5-30 22:49:23

jhq999 发表于 2022-5-30 22:43
示例:
输入:8,3,3 输出:-1
输入:3,4,2 输出:1


谢谢

jhq999 发表于 2022-5-30 22:52:53

洛无极 发表于 2022-5-30 21:12
谢了,但这道题不需要定义p、q什么的吗?

1不用定义,p就是a,q就是b

洛无极 发表于 2022-5-30 23:28:31

jhq999 发表于 2022-5-30 22:52
1不用定义,p就是a,q就是b

我已经改好了,万分感谢
页: [1]
查看完整版本: 急求帮助,拿石子问题