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 |
Re:半年前ac过这题,重做,居然被卡了2小时In Reply To:半年前ac过这题,重做,居然被卡了2小时 Posted by:920394589 at 2017-08-17 17:56:21 > #include<stdio.h> > #include<string.h> > #include<iostream> > using namespace std; > > const int maxn = 1005; > int n,m,d; > bool success,vis[maxn],tb[maxn*10]; > int x[maxn]; > > void init(){ > success = 0; > memset(vis,0,sizeof(vis)); > } > > void get_prime_table(){ > for (int i = 2; i < maxn*10; i++) > for (int j = 2; i*j < maxn*10; j++) > tb[i*j] = 1; > } > > void dfs(int t){ > if(t==m+1){ > success = 1; > return; > } > for(int i=n;i<=m;++i){ > if(!vis[i]){ > if(t>n){ > int sum = i; > int bit = t-1; > while(bit>=n&&bit>t-d&&tb[sum+=x[bit]])--bit; > if(bit!=n-1&&bit!=t-d)continue; > } > x[t] = i; > vis[i] = 1; > dfs(t+1); > if(success)return; > vis[i] = 0; > } > } > } > > int main(){ > memset(tb,0,sizeof(tb)); > get_prime_table(); > while(cin>>n>>m>>d&&(n||m||d)){ > init(); > dfs(n); > if(success){ > for(int i=n;i<m;++i){ > // printf("%d,",x[i]); > cout<<x[i]<<','; > } > // printf("%d\n",x[m]); > cout<<x[m]<<endl; > }else{ > printf("No anti-prime sequence exists.\n"); > } > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator