DFS 全排列 素數剪枝判斷

2021-09-10 09:35:25 字數 1075 閱讀 7188

許爺某天ak太多了心煩,想帶領他的小跟班們做遊戲 。

遊戲內容如下:

當許爺喊出乙個數字n時,便有n個小夥伴,身上帶著1到n的數字,手牽手拉成乙個環。當環裡的每個人相鄰兩人身上數字之和都為素數時,便找到了乙個環。當找出所有的環時,遊戲便結束。

note: 每個環的第乙個數字必須是1

input

n (0 < n < 20).

output

輸出格式如下方輸出樣例所示。

別忘了在每組方案後面輸出乙個空行。

sample input

6

8

sample output

case 1:

1 4 3 2 5 6

1 6 5 2 3 4

case 2:

1 2 3 8 5 6 7 4

1 2 5 8 3 4 7 6

1 4 7 6 5 8 3 2

1 6 7 4 3 8 5 2

**:

#include#include#include#includeusing namespace std;

const int maxn=1000;

#includetypedef long long ll;

int a[maxn];

bool vis[maxn];

int prime[maxn];

int cnt;

int n;

int used[maxn];

void fun()

} }}void dfs(int x)

if(k==n-1)

{ for(int i=1;i<=n;i++)

{if(g)

cout<

g=1;

cout<>n)

{ memset(used,0,sizeof(used));

printf("case %d:\n",++kase);

if(n==1)

{ cout<

全排列 DFS搜尋

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。輸入只有一行,是乙個由不同的小寫字母組成的字串,已知字串的長度在1到6之間。輸出這個字串的所有排列方式,每行乙個排列。要求字母序比較小的排列在前面。...

DFS之全排列

c 實現 includeusing namespace std using std cout using std cin int n 3 int seat 3 三個位置,所放的數字先全部用0初始化 int mark 3 分別標記0,1,2三個陣列是否放置在了位置上,如已經放置值用1表示,沒放置用0。...

dfs全排列問題

全排列問題,不是計算全排列a,是把全排列列印出來,這也是dfs的一道入門題目,值得學習。問題 a 遞迴入門 全排列 題目描述 排列與組合是常用的數學方法。先給乙個正整數 1 n 10 例如n 3,所有組合,並且按字典序輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 輸入...