POJ 2244 Eeny Meeny Moo
这个题很无语,死磕就能过,开始像找到dp的方法或数论的方法,都失败。后来尝试暴力,果然过了……分析一下感觉过了也正常,数据最大只有100多,由于要找最小的想必每个数的答案也不会太大,从2开始试,到找到结果为止,运算量在万的数量级上,可以接受,所以暴力可过。当然,这种题本地打表自然可以过。以下是代码:
#include <iostream>
using namespace std;
long r[200];
bool away[200];
int main()
{
long n,i,j,awayC,next,now,k,l;
for(i=3;i<=150;i++)
{
for(j=2;;j++)
{
memset(away,0,sizeof(away));
now=1; awayC=0;
while(now!=2)
{
away[now]=1; awayC++;
long c=0;
for(k=now+1;;k++)
{
if(k>i)
{
for(l=1;away[l];l++);
k=l-1;
}
else if(!away[k])
{
c++;
if(c==j) break;
}
}
now=k;
}
if(awayC==i-1) break;
}
r[i]=j;
}
while(cin>>n,n) cout<<r[n]<<endl;
}
posted on 2010-03-05 10:21 liugoodness 阅读(435) 评论(0) 编辑 收藏 举报