題目鏈結
這種選和不選的題最好用遞迴做了,但是需要剪枝,然後就是對特殊情況的考慮,不然會超時。
注意當陣列中所有數的和加起來都達不到目標值,就沒必要搜尋了,直接輸出無解
#include
using namespace std;
const
int maxn =
1e4+5;
const
int maxx =
1e6+5;
int arr[maxn]
;int dp[maxx]
;int n, m, flag =0;
vector<
int> ans;
void
dfs(
int i,
int sum, vector<
int> v)
if(cur < m)if(
!v.empty()
) v.
pop_back()
;dfs
(i+1
, sum, v);}
intmain()
if(sumx < m)
sort
(arr, arr + n)
; vector<
int> v;
dfs(0,
0, v);if
(ans.
size()
==0)for
(int i=
0;isize()
;i++
)return0;
}
L3 001 湊零錢 (30 分)
輸入第一行給出兩個正整數 n 10 4 是硬幣的總個數,m 10 2 是韓梅梅要付的款額。第二行給出 n 枚硬幣的正整數面值。數字間以空格分隔。在一行中輸出硬幣的面值 v 1 v 2 v k 滿足條件 v 1 v 2 v k m。數字間以 1 個空格分隔,行首尾不得有多餘空格。若解不唯一,則輸出最小...
L3 001 湊零錢 30 分
輸入格式 輸入第一行給出兩個正整數 n 10 4 是硬幣的總個數,m 10 2 是韓梅梅要付的款額。第二行給出 n 枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v 1 v 2 v k 滿足條件 v 1 v 2 v k m。數字間以 1 個空格分隔,行首尾不得有多餘空格。若...
L3 001 湊零錢 30分
輸入第一行給出兩個正整數 n 10 4 是硬幣的總個數,m 10 2 是韓梅梅要付的款額。第二行給出 n 枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v 1 v 2 v k 滿足條件 v 1 v 2 v k m。數字間以 1 個空格分隔,行首尾不得有多餘空格。若解不唯一,...