栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1039 Number Game

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1039 Number Game

#include<iostream>#include<cstdio>#include<ctime>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>#include<vector>#define C    240#define TIME 10#define inf 1<<25#define LL long longusing namespace std;int dp[1<<19];int get_state(int state,int x){    int ret=state;    for(int i=x;i<=20;i+=x)        ret&=~(1<<(i-2));    for(int i=2;i<=20;i++){        if((1<<(i-2))&ret){ for(int j=x;i-j-2>=0;j+=x)     if(!((1<<(i-j-2))&ret)){          ret&=~(1<<(i-2));          break;     }        }    }    return ret;}int get_dp(int state){    if(dp[state]!=-1)        return dp[state];    for(int i=2;i<=20;i++){        if(state&(1<<(i-2))){ int tmp=get_state(state,i); if(!get_dp(tmp))     return dp[state]=1;        }    }    return dp[state]=0;}int main(){    memset(dp,-1,sizeof(dp));    dp[0]=0;    int t,n,a[20],cas=0;    scanf("%d",&t);    while(t--){        scanf("%d",&n);        int state=0;        for(int i=0;i<n;i++){ scanf("%d",&a[i]); state|=1<<(a[i]-2);        }        printf("Scenario #%d:n",++cas);        if(get_dp(state)==0) puts("There is no winning move.n");        else{ printf("The winning moves are:"); for(int i=0;i<n;i++){     int tmp=get_state(state,a[i]);     if(!get_dp(tmp))         printf(" %d",a[i]); } puts(".n");        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号