DFS 組合 判斷素數

2021-10-02 12:23:53 字數 1338 閱讀 2799

題目描述:

已知 n 個整數b1,b2,…,bn,以及乙個整數 k(k<n)。

從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。

例如當 n=4,k=3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為:

3+7+12=22  3+7+19=29 7+12+19=38 3+12+19=34。

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

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

輸入

第一行兩個整數:n , k (1<=n<=20,k<n)

第二行n個整數:x1,x2,…,xn (1<=xi<=5000000)

輸出

乙個整數(滿足條件的方案數)。

樣例輸入

4 33 7 12 19

樣例輸出

1解題**如下:

#include

#include

using

namespace std;

#define n 20

int n,k;

int x[n]

;//存放輸入的n位整數

int visit[n]

;//標誌k位加數中有哪些被佔

int look[n]

;//標誌n位整數中哪些被佔

int a[n]

;//標誌k位加數分別是哪些

int result=0;

//判斷是否為素數

intfun

(int x)

}return0;

}void

dfs(

int step)

cout<

cout<

//判斷和是否為素數if(

!fun

(sum)

)return;}

int j;

for(

int i=

0;iif(look[i]==0

&&x[i]

>a[j-1]

)}}int

main()

dfs(0)

; cout<

}

樣例結果截圖:

1-2行:輸入;

3-6行:全部組合

7行:最終和為素數的組合個數

因為不能測試,所以也不知道超時了沒有~

如有不對,請各位大佬指教!嘻嘻嘻~

dfs組合 判斷素數

遞迴入門 組合 判斷素數 時間限制 1 sec 記憶體限制 128 mb 提交 205 解決 77 提交 狀態 討論版 命題人 外部匯入 題目描述 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整...

DFS 3 組合 判斷素數

problem 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19 時,可得全部的組合與它們的和為 3 7 12 22 3 7 19 29 7 12 19 38 3 12...

XYNUOJ1327 組合 判斷素數 DFS

時間限制 1 sec 記憶體限制 128 mb 提交 4 解決 3 您該題的狀態 已完成 提交 狀態 討論版 題目描述 已知 n 個整數b1,b2,bn 以及乙個整數 k k n 從 n 個整數中任選 k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3,4 個整數分別為 3,7,12,19...