2 lpq29743 lpq29743 于 2017.07.10 21:49 提问

HDOJ 1016一直WA,格式和思路我都觉得没问题啊

做HDOJ 1016让我有点吐血,我的思路也是DFS,只不过实现方法略有差别,所以也很难找到对比的答案,但是跟别人的测试数据对比也无误啊!
以下是我的代码:

#include<stdio.h>
#include<stdlib.h>

int n;
int *s;

int isPrime(int num) {
    int result = 1;
    for(int i = 2; i < num; i++) {
        if(num % i == 0) {
            result = 0;
            break;
        }
    }
    return result;
}

void dfs(int step) {
    if(step == n) {
        if(isPrime(s[n - 1] + s[0])) {
            for(int i = 0; i < n; i++) {
                if(i != 0) {
                    printf(" ");
                }
                printf("%d", s[i]);
            }
            printf("\n");
        }
    }
    int tmp;
    for(int i = step; i < n; i++) {
        if(isPrime(s[step - 1] + s[i])) {
            tmp = s[step];
            s[step] = s[i];
            s[i] = tmp;
            dfs(step + 1);
            tmp = s[step];
            s[step] = s[i];
            s[i] = tmp;
        }
    }
}

int main() {
    int count = 0;
    while(scanf("%d", &n) == 1) {
        s = (int *)malloc(sizeof(int) * n);
        for(int i = 0; i < n; i++) {
            s[i] = i + 1;
        }
        printf("Case %d:\n", ++count);
        if(n >= 1) {
            dfs(1);
        }
        printf("\n");
    }
    return 0;
}

我觉得格式和输出都没问题啊,搞不懂哪里导致WA了!
另外,HDOJ也不能看数据,不知各位大神有什么好的讨论网址或者其他OJ介绍
不然做完题之后排错很辛苦啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!