2 lpq29743 lpq29743 于 2017.07.10 22:06 提问

HDOJ 1016一直WA,格式和思路我都觉得没问题啊
 #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;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!