zoukankan      html  css  js  c++  java
  • 小花梨的取石子游戏(思维)

    看从当前点到到不是1的点的位置,从奇偶性判断

    代码:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<stack>
    #include<map>
    #include<set>
    #include<vector>
    #include<cmath>
    
    const int maxn=1e5+5;
    typedef long long ll;
    using namespace std;
    int a[maxn*2]; 
    int main()
    {
        int n;
        cin>>n;
        int flag=0;
        for(int t=0;t<n;t++)
        {
            scanf("%d",&a[t]);
            if(a[t]!=1)
            {
                flag=1;
            }
        } 
        if(flag==0)
        {
            if(n%2==0)
            {
                for(int t=0;t<n;t++)
                {
                    printf("Second
    ");
                }
            }
            else
            {
                for(int t=0;t<n;t++)
                {
                    printf("First
    ");
                }    
            }
        }
        else
        {
        
        for(int t=n;t<2*n;t++)
        {
            a[t]=a[t-n];
        }
        if(n==1)
        {
            printf("First
    ");
            return 0;
        }
        for(int t=0;t<n;t++)
        {
            if(a[t]==1)
            {
            int ans=0;
            for(int j=t;j<t+n;j++)
            {
              if(a[j]==1)
              {
                  ans++;
              }    
              else
              {
                  break;
              }
            }
            if(ans%2==0)
            {
                printf("First
    ");
            }
            else
            {
                printf("Second
    ");
            }
            for(int j=0;j<ans-1&&t+j+1<n;j++)
            {
                if(ans%2==0&&j%2==0)
                {
                    printf("Second
    ");
                }
                else if(ans%2==0&&j%2==1)
                {
                    printf("First
    ");
                }
                else if(ans%2==1&&j%2==0)
                {
                    printf("First
    ");
                }
                else if(ans%2==1&&j%2==1)
                {
                    printf("Second
    ");
                }
            }
            //cout<<ans<<endl;
            t=t+ans-1;
            }
            else
            {
                printf("First
    ");
            }
        }
        }
    
        return 0;
    }
  • 相关阅读:
    L1-050. 倒数第N个字符串
    全排列问题(递归)
    L2-014. 列车调度
    连通 OR 不连通(NOJ 1044)
    数三角形(codevs 3693)
    Min(BZOJ 1441)
    STL中heap用法
    军训分批(codevs 2751)
    团伙(codevs 2597)
    Subsequence(hdu 3530)
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10887053.html
Copyright © 2011-2022 走看看