L3 001 湊零錢 (揹包輸出路徑)

2021-08-17 02:51:20 字數 1234 閱讀 5984

時間限制

200 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard 作者

陳越輸入格式:

輸入第一行給出兩個正整數:n(<=104)是硬幣的總個數,m(<=102)是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。

輸出格式:

在一行中輸出硬幣的面值 v1

<= v2

<= ... <= vk,滿足條件 v1 + v2 + ... + vk = m。數字間以1個空格分隔,行首尾不得有多餘空格。若解不唯一,則輸出最小序列。若無解,則輸出「no solution」。

注:我們說序列比「小」,是指存在 k >= 1 使得 a[i]=b[i] 對所有 i < k 成立,並且 a[k] < b[k]。

輸入樣例1:

8 9

5 9 8 7 2 3 4 1

輸出樣例1:
1 3 5
輸入樣例2:
4 8

7 2 4 3

輸出樣例2:
no solution

#include #include #include #include #include #include using namespace std;

#define ll long long

#define lt x<<1

#define rt x<<1|1

const int maxn = 1e4+111;

const int inf = 0x3f3f3f3f;

int val[maxn];

int dp[111];

int pre[111][maxn];

int main()

sort(val+1,val+1+n);

dp[0]=1;

for(int i=n;i>=1;i--)

}} int k=1;

int p=0;

if(dp[m]==1)else

m-=val[k];

}k++;

}printf("\n");

}else

return 0;

}

L3 001 湊零錢(揹包dp,輸出路徑)

輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v1 v2 vk,滿足條件 v1 v2 vk m。數字間以1個空格分隔,行首尾不得有多餘空格。若解不唯一,則輸出最小序列...

L3 001 湊零錢 (01揹包)

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v...

L3 001 湊零錢 dp 滿01揹包

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 輸入格式 輸入第一行給出兩個正整數 n 104 是硬幣的總個數,m 102 是韓梅梅要付的款額。第二行給出n枚硬幣的正整數面值。數字間以空格分隔。輸出格式 在一行中輸出硬幣的面值 v...