hdoj 1847 (同硬币游戏1)

来源:互联网 发布:ubuntu怎么升级内核 编辑:程序博客网 时间:2024/06/04 01:20

用了动态规划。

想复杂了,居然还有规律,还好数不大,不然就GG了。

#include<iostream>
#include<cmath>
using namespace std;


int main()
{
int n;
bool flag;
int dp[1010] = {0};
int a[] = { 1,2,4,8,16,32,64,128,256,512 };
for (int i = 0;i<10;i++)
{
dp[a[i]] = 1;

}
for (int i = 1; i <= 1000; i++)
{
if (dp[i] == 0)
{
flag = false;
for (int j = 0; j < 10; j++)
{
if (i - a[j] > 0) {
if (dp[i - a[j]]==0){
dp[i] = 1;
flag = true;
break;
}
}
}
if (!flag)dp[i] = 0;
}
}


while (cin>> n)
{
if(dp[n]==1)
cout << "Kiki" << endl;
else cout << "Cici" << endl;
}
return 0;
}