zoukankan      html  css  js  c++  java
  • 今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个

    /*
    题目描述
    今盒子里有n个小球,A、B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断。
    我们约定:
    每个人从盒子中取出的球的数目必须是:1,3,7或者8个。
    轮到某一方取球时不能弃权!
    A先取球,然后双方交替取球,直到取完。
    被迫拿到最后一个球的一方为负方(输方)
    请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢?
    */
    
    /*可以看出,当某个数要获胜,在其先抽之后剩下的那个数必输即可。
     * 也就是n时,只要n-1,n-3,n-7和n-8只要有一个数字对于乙玩家来说是必输的,
     * 那么甲就是赢家,这就可以利用之前求到的。*/
    #include <stdio.h>
    void caculate(int n);
    int a[10000] = {0, 1, 0, 1, 0, 1, 0, 1, 1};
    
    int main() {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n; ++i) {
            int temp;
            scanf("%d",&temp);
            caculate(temp);
        }
    }
    
    void caculate(int n) {
        if (n <= 9) {
            printf("%d
    ", a[n - 1]);
        } else {
            for (int i = 9; i < n; ++i) {
                a[i] = !(a[i - 1] & a[i - 3] & a[i - 7] & a[i - 8]);
            }
            printf("%d
    ",a[n-1]);
        }
    }
  • 相关阅读:
    TCP/IP协议栈之QEMU
    FreeRTOS-Plus-CLI中添加一个自己的命令行
    FreeRTOS A57
    log日志库
    函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
    Makefile 使用小结
    41. 缺失的第一个正数(First Missing Positive)
    42. 接雨水(Trapping Rain Water)
    关于C++内联和静态成员函数的问题
    C++11 线程并发问题
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11543618.html
Copyright © 2011-2022 走看看