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