| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
有没有好的算法啊?暴力搜索在我的机器上速度可以接受,但放到提交就tle了
下面是代码,牛人指点一下吧
//a[0]=0
//a[i+1]=(m+a[i]-2)%(n-i)+1
//make sure a[1],a[2],a[3]...a[k]>k
#include <iostream.h>
int isok(int m,int k,int i,int ai)
{
int aii;
if(i>k)
return 1;
if(i>0 && ai<=k)
return 0;
aii=(m+ai-2)%(2*k-i)+1;
return isok(m,k,i+1,aii);
}
int getm(int k)
{
int m;
for(m=k;;m++)
{
if(isok(m,k,0,1))
return m;
}
return -1;
}
void main()
{
int k;
while(1)
{
cin>>k;
if(k==0)
break;
cout<<getm(k)<<endl;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator