码迷,mamicode.com
首页 > 其他好文 > 详细

UVA - 524 Prime Ring Problem

时间:2015-05-03 19:06:19      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:


题目大意:给出n,用1-n来组成一个环,要求相邻的两个数之和为素数。

解题思路:dfs,注意判断最后一个和第一个数之和也要为素数。


#include <cstdio>
int n, vis[20], rec[20] = {1}, isPrime[50];

void DFS(int cur) {
    if (cur == n) {
        if (isPrime[rec[cur - 1] + 1])
            return;
        printf("1");
        for (int i = 1; i < n; i++)
            printf(" %d", rec[i]);
        puts("");
    }


    for (int i = 2; i <= n; i++) {
        if (vis[i] || isPrime[rec[cur-1] + i])
            continue;
        vis[i] = 1;
        rec[cur] = i;
        DFS(cur + 1);
        vis[i] = 0;
    }
}


int main() {
    for (int i = 2; i <= 40; i++)
        for (int j = 2 * i; j <= 40; j += i)
            isPrime[j] = 1;

    int T = 0;
    while (scanf("%d", &n) != EOF) {
        if (T++) puts("");
        printf("Case %d:\n", T);
        DFS(1);
    }
    return 0;
}

UVA - 524 Prime Ring Problem

标签:

原文地址:http://blog.csdn.net/kl28978113/article/details/45460273

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!