dfs大樓之洛谷1036

2021-08-21 06:07:14 字數 1496 閱讀 6864

已知 n

n 個整數 x_1,x_2,…,x_nx1

​,x2

​,…,

xn​ ,以及 1

1 個整數 k

k ( k

k<

n )。從 n

n 個整數中任選 k

k 個整數相加,可分別得到一系列的和。例如當 n=4,k=3n=

4,k=

3 , 4

4 個整數分別為 3,7,12,193,

7,12

,19 時,可得全部的組合與它們的和為:

3+7+12=223+

7+12

=223+7+19=293+

7+19

=297+12+19=387+

12+1

9=38

3+12+19=343+

12+1

9=34

。現在,要求你計算出和為素數共有多少種。

例如上例,只有一種的和為素數: 3+7+19=293+

7+19

=29 。

輸入格式:

鍵盤輸入,格式為:

n,kn,k

( 1 \le n \le 20,k1≤

n≤20

,kx_1,x_2,…,x_n (1 \le x_i \le 5000000)x1

​,x2

​,…,

xn​(

1≤xi

​≤50

0000

0)輸出格式:

螢幕輸出,格式為: 1

1 個整數(滿足條件的種數)。

輸入樣例#1:

複製

4 3

3 7 12 19

輸出樣例#1:

複製

1

這是一道搜尋題。

仔細看一下,其實原型就是乙個cmn(m裡面選n個)

再加上乙個質數的判斷和乙個n個數的和就可以。

顯然,用回溯做可以ac。

下面是我自己敲的**:

#include

#include

#include

using namespace std;

const int mm=1000;

int isprime(int x)

return 1;

}int n;

int k;

int a[mm];

int counts;

bool b[mm];

int jishu=0;

void dfs(int f,int x)///選的第f個數,到第x個數了(從x裡面選f個)

{///cout<<"dfs("return;

else if(f>k+1)return;

else if(f>k)

{//cout<>n>>k;

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

cin>>a[i];

dfs(1,1);

cout<

dfs大樓之洛谷1706

輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。輸入格式 n 1 n 9 輸出格式 由1 n組成的所有不重複的數字序列,每行乙個序列。每個數字保留5個常寬。輸入樣例 1 複製3 輸出樣例 1 複製1 2 3 1 3 2 2 1 3 2 3 1 3 1 ...

dfs大樓之洛谷1691

設r 是要進行排列的n個元素。其中元素r1,r2,rn可能相同。使設計乙個演算法,列出r的所有不同排列。給定n以及待排列的n個元素。計算出這n個元素的所有不同排列。輸入格式 第1行 元素個數n 1 n 500 第2行 一行字串,待排列的n個元素 輸出格式 計算出的n個元素的所有不同排列,最後一行是排...

dfs大樓之洛谷1988

2008北京奧運會,你想成為四川汶川的一名火炬手,經過層層選拔,終於到了最後一關,這一關是一道很難的題 任意給定乙個正整數n n 100000 求乙個最小的正整數m,使得n m的十進位制表示形式裡只含有1和0。輸入格式 一行,輸入乙個整數n。輸出格式 輸出一行,如果有解,輸出最小的m,否則輸出 no...