#include<bits/stdc++.h>
using namespace std;
int n;
int a[11],s[1005];
int sg(int x){
int t;
int vis[1005];
memset(vis,0,sizeof vis);
for(int i=0;a[i]<=x;i++){
t=x-a[i];
if(s[t]==-1) s[t]=sg(t);
vis[s[t]]=1;
}
for(int i=0;;i++){
if(!vis[i]) return i;
}
}
int main()
{
memset(s,-1,sizeof(s));
for(int i=0;i<11;i++){
a[i]=pow(2,i);
}
while(scanf("%d",&n)!=EOF){
if(sg(n)==0) printf("Cici\n");
else printf("Kiki\n");
}
return 0;
}
hdu1847sg函数
最新推荐文章于 2023-07-11 00:59:15 发布
这篇文章介绍了一种使用递归的解决方案来解决0-1背包问题,通过sg函数实现状态转移,当背包容量可以整除某一物品的价值时,输出'Kiki',反之为'Cici'。展示了如何用C++编程实现并解决经典算法问题。
2844

被折叠的 条评论
为什么被折叠?



