時間限制
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輸出樣例1:5 9 8 7 2 3 4 1
1 3 5輸入樣例2:
4 8輸出樣例2:7 2 4 3
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...