PersonalCorpus 版 (精华区)
Your C++ program has solved Ok the problem 524 (Prime Ring Problem)
in 1.210 seconds using as much as 392 kbytes of virtual memory.
bool p[32];
int s[16],n;
bool used[17];
void tryit_even(int x);
void tryit_odd(int x)
{
int i;
if (x==n) {
if (p[s[x-1]+1]) {
for (i=0;i<n-1;i++) printf("%d ",s[i]);
printf("%d\n",s[n-1]);
return;
}
}
for (i=3;i<n;i+=2) if (!used[i]&&p[i+s[x-1]]) {
used[i]=true;
s[x]=i;
tryit_even(x+1);
used[i]=false;
}
}
void tryit_even(int x)
{
int i;
for (i=2;i<=n;i+=2) if (!used[i]&&p[i+s[x-1]]) {
used[i]=true;
s[x]=i;
tryit_odd(x+1);
used[i]=false;
}
}
void main()
{
int t=0;
memset(p,0,sizeof(p));
p[2]=true; p[3]=true; p[5]=true; p[7]=true; p[11]=true; p[13]=true;
p[17]=true; p[19]=true; p[23]=true; p[29]=true; p[31]=true;
s[0]=1;
while (scanf("%d\n",&n)==1) {
if (t>0) printf("\n");
printf("Case %d:\n",++t);
memset(used,0,sizeof(used)); used[1]=true;
tryit_even(1);
}
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:7.713毫秒