• 今盒子里有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]);
        }
    }
  • 相关阅读:
    list拖动
    android sdk
    AwwwB推荐网站全盘克隆
    WPF中的容器控件——WrapPanel
    WPF中的容器控件——StackPanel
    MFC应用程序中指针的使用
    排序算法之插入排序
    转:MFC 常用语句集锦
    【转】MFC学习总结
    排序算法之冒泡排序
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11543618.html
Copyright © 2020-2023  润新知