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毫秒