HDOJ 1016 Prime Ring Problem素数环【深搜2】

简介: HDOJ 1016 Prime Ring Problem素数环【深搜】

C语言:

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int n;
int df[21];
int t=1;
int m[21];
int mi;
bool pn(int x,int y){//判断素数
    for(int i=2;i*i<=x+y;i++){
        if((x+y)%i==0){
            return false;
        }
    }
    return true;
}
void dfs(int x){
    if(mi==n&&pn(m[1],m[n])){
        for(int i=1;i<n;i++){
            printf("%d ",m[i]);
        }
        printf("%d\n",m[n]);
        return;
    }
    for(int i=2;i<=n;i++){
        if(df[i]==0&&pn(x,i)){
            df[x]=1;
            mi++;//当前小球数
            m[mi]=i;
            dfs(i);
            df[x]=0;
            mi--;//必须减一
        }
    }
}
int main()
{
    while(~scanf("%d",&n)){
        printf("Case %d:\n",t);
        t++;
        memset(df,0,sizeof(df));
        mi=1;
        m[mi]=1;
        dfs(1);
        printf("\n");
    }
    return 0;
}
目录
相关文章
|
6月前
hdoj 4715 Difference Between Primes 素数筛选+二分查找
hdoj 4715 Difference Between Primes 素数筛选+二分查找
26 1
|
8月前
|
算法
1091 zoj Knight Moves的BFS算法和DFS
1091 zoj Knight Moves的BFS算法和DFS
35 0
|
5月前
|
Java
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
24 0
|
6月前
|
开发框架 .NET
poj 3468 A Simple Problem with Integers线段树区间修改
题目意思很简单,有N个数,Q个操作, Q l r 表示查询从l到r 的和,C l r v 表示将从l到r 的值加上v,明显的线段树,不知道线段树的人肯定暴力,肯定超时,哈哈!!
19 0
|
6月前
|
C++
poj 2182 Lost Cows(树状数组)
FJ有n头牛,现在它们排成一排,每一头牛都有一个不同的编号(1-n),现在知道从第二头牛开始每头牛左边比自己编号小的牛的数目,让你确定每头牛的编号。
21 0
HDU-1016,Prime Ring Problem(DFS+素数)
HDU-1016,Prime Ring Problem(DFS+素数)
HDOJ 1016 Prime Ring Problem素数环【深搜】
HDOJ 1016 Prime Ring Problem素数环【深搜】
89 0
HDOJ 1016 Prime Ring Problem素数环【深搜】
HDOJ(HDU) 2136 Largest prime factor(素数筛选)
HDOJ(HDU) 2136 Largest prime factor(素数筛选)
89 0
|
Go
HDOJ(HDU) 1977 Consecutive sum II(推导、、)
HDOJ(HDU) 1977 Consecutive sum II(推导、、)
87 0