部分和問題 dfs

2022-03-31 23:21:02 字數 1100 閱讀 6317

時間限制:1000 ms  |           記憶體限制:65535 kb

難度:2

描述給定整數a1、a2、.......an,判斷是否可以從中選出若干數,使它們的和恰好為k。

輸入首先,n和k,n表示數的個數,k表示數的和。 接著一行n個數。 (1<=n<=20,保證不超int範圍)

輸出如果和恰好可以為k,輸出「yes」,並按輸入順序依次輸出是由哪幾個數的和組成,否則「no」

樣例輸入

4 13

1 2 4 7

樣例輸出

yes

2 4 7

題解:這題用動態規劃應該也能寫,且時間效率高,用揹包寫了下,果斷不對,思路有問題;

1 #include2 #include3

using

namespace

std;

4int m[21

],n,k;

5 stacknum;

6bool dfs(int temp,int

i)13

return

false;14

}15intmain()

25 puts(""

);26}27

else printf("

no\n");

28}29return0;

30 }

view code

方法二:

1 #include2

const

int maxn=21;3

intm[maxn],anser[maxn];

4int

ans,k,n;

5void dfs(int top,int num,int

sum)

13 puts(""

);14

return;15

}16if(num>=n||top>=n)return;17

for(int i=top;i)22}

23int

main()

30return0;

31 }

部分和問題 DFS

題目描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入 有多組測試資料。每組測試資料兩行 第一行 正整數n 整數k,n表示數的個數,k表示數的和。第二行 n個數 輸出 每組測試資料,如果和恰好可以為k,輸出 yes 並按輸入順序依次輸出是由哪幾個數的和組成,否則 n...

部分和問題 簡單dfs

部分和問題 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入首先,n和k,n表示數的個數,k表示數的和。接著一行n個數。1 n 20,保證不超int範圍 輸出 如果和恰好可以為k,輸出 yes 並按...

NYOJ 部分和問題(DFS基礎)

題目描述 給定整數a1 a2 an,判斷是否可以從中選出若干數,使它們的和恰好為k。輸入首先,n和k,n表示數的個數,k表示數的和。接著一行n個數。1 n 20,保證不超int範圍 輸出如果和恰好可以為k,輸出 yes 並按輸入順序依次輸出是由哪幾個數的和組成,否則 no 樣例輸入 4 13 1 2...