XYNUOJ1327 組合 判斷素數 DFS

2021-09-26 07:43:41 字數 1038 閱讀 5213

時間限制: 1 sec 記憶體限制: 128 mb

提交: 4 解決: 3

您該題的狀態:已完成

[提交][狀態][討論版]

題目描述

已知 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#includeusing namespace std;

int ans,sum=0,k,n,a[21],b[21]=,c[21];

bool prime(int x)

return true;

} void dfs(int step)

return ;

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

int main()

ans = 0;

dfs(1);

cout

}

XYNUOJ 1275 組合的輸出

時間限制 1 sec 記憶體限制 128 mb 提交 17 解決 9 提交 狀態 討論版 問題描述 從n個數中取出r個元素,輸出所有組合 輸入格式 一行兩個自然數n和r 1 輸出格式 所有的組合,每個組合佔一行,其中的元素從小到大排序,用乙個空格隔開,所有組合按字典序。輸入樣例 5 3 輸出樣例 1...

xynuoj1326 組合的輸出 dfs

時間限制 1 sec 記憶體限制 128 mb 提交 10 解決 6 提交 狀態 討論版 edit testdata 排列與組合是常用的數學方法,其中組合就是從n個元素中抽出r個元素 不分順序且r n 我們可以簡單地將n個元素理解為自然數1,2,n,從中任取r個數。現要求你不用遞迴的方法輸出所有組合...

1033 遞迴3(組合 判斷素數)

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