做题要仔细!!!HDOJ 1016

来源:互联网 发布:cpa软件联盟 编辑:程序博客网 时间:2024/06/05 20:41

自认为程序是对的,但总是 WA,纠结了一下午,最后才发现是冒号的位置打错了,哭笑不得。。。

#include <stdio.h>#include <string.h>int result[21], visited[21];int p[40];int n;void DFS(int pre){    if (pre == n && p[result[n] + 1])    {        for (int i = 1; i <= n; ++i)            printf(i==1?"%d":" %d", result[i]);        printf("\n");        return;    }    for (int i = 2; i <= n; ++i)        if (p[result[pre] + i] && visited[i] == 0)        {            result[pre + 1] = i;            visited[i] = 1;            DFS(pre + 1);            visited[i] = 0;        }}int main(){    int ncase = 1;    p[2] = p[3] = p[5] = p[7] = p[11] = p[13] = p[17] = p[19] = p[23] = p[29] = p[31] = p[37] = 1;        while(scanf("%d", &n) != EOF)    {        printf("Case %d:\n", ncase++);        memset(visited, 0, sizeof(visited));        result[1] = 1;        if (n % 2 == 0)            DFS(1);        printf("\n");    }    return 0;}