zoukankan      html  css  js  c++  java
  • HDOJ 1848(SG函数)

    对于SG函数来说,sg[y]=x的意义为,x与y的输赢状态是相同的

    sg[y]=mex(y)的定义与n.p点的定义是相同的

    #include<iostream>
    #include<cstring>
    using namespace std;
    int SG[1001],f[20]={1,2};
    int flag[20];
    void getfibo()
    {
        int i;
        for(i=2;i<=15;i++) f[i]=f[i-1]+f[i-2];
    }
    void getSG(int x)
    {
        int i,j;
        memset(SG,0,sizeof(SG));
        for(i=0;i<x;i++)//对i点的SG值进行搜索
        {
            memset(flag,0,sizeof(flag));
            for(j=0;f[j]<=i;j++)//对i点所有后继点的SG值进行标记
            {
                flag[SG[i-f[j]]]=1;
            }//
            for(j=0;;j++)//搜索没有被标记的最小值
            {
                if(flag[j]==0)
                {
                    SG[i]=j;
                    break;
                }
            }
        }
    }
    int main()
    {
        int m,n,p;
        int t1,t2,t3;
        int ans;
        int i;
        getfibo();
        getSG(1000);
        for(i=0;i<30;i++) cout<<SG[i]<<" ";
        while(cin>>m>>n>>p)
        {
            if(m==0&&n==0&&p==0) break;
            ans=SG[m]^SG[n]^SG[p];
            if(ans==0) cout<<"Nacci"<<endl;
             else cout<<"Fibo"<<endl;
        }
        return 0;
    }

  • 相关阅读:
    如何申请iOS开发者证书/发布app到手机
    STL
    TCP/IP编程
    STL
    STL
    Python网络爬虫
    Python网络爬虫
    Python网络爬虫
    Python编程-基础知识-python项目包和文件的管理以及如何引用相对路径的包和模块
    带你认识HL7和CDA
  • 原文地址:https://www.cnblogs.com/acalvin/p/3484998.html
Copyright © 2011-2022 走看看