L3 001 湊零錢 30 分

2021-09-26 01:29:19 字數 799 閱讀 2196

題目鏈結

這種選和不選的題最好用遞迴做了,但是需要剪枝,然後就是對特殊情況的考慮,不然會超時。

注意當陣列中所有數的和加起來都達不到目標值,就沒必要搜尋了,直接輸出無解

#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 個空格分隔,行首尾不得有多餘空格。若解不唯一,...