zoukankan      html  css  js  c++  java
  • zoj 2686 Cycle Game 博弈论

    其实规律很好找的,当从某点开始,向某一边找出非0的个数,为奇数时必胜。

    代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int n,a[25];
     5 bool dfs(int m)
     6 {
     7     int cnt=0,i=m,k;
     8     while(a[i]) i=(i+1)%n,cnt++;
     9     if(cnt&1) return 1;
    10     i=(m+n-1)%n;cnt=0;
    11     while(a[i]) i=(n+i-1)%n,cnt++;
    12     if(cnt&1) return 1;
    13     for(int i=-1;i<=1;i+=2){
    14         if(i==1) k=m;
    15         else k=(m+n-1)%n;
    16         for(int j=1;j<=a[k];j++){
    17             a[k]-=j;
    18             if(!dfs((n+i+m)%n)){
    19                 a[k]+=j;
    20                 return 1;
    21             }
    22             a[k]+=j;
    23         }
    24     }
    25     return 0;
    26 }
    27 int main()
    28 {
    29     int t;
    30     cin>>t;
    31     while(t--){
    32         cin>>n;
    33         for(int i=0;i<n;i++) cin>>a[i];
    34         puts(dfs(0)?"YES":"NO");
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    代码
    怎么创建scrollview
    tcp/Ip http
    游戏道具
    FPS interv
    调整音乐
    插入排序
    冒泡排序
    JSON详解
    设计模式系列(2) 工厂模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3330817.html
Copyright © 2011-2022 走看看