题目大意:有一组纸币能构成哪几种面值。
#include<bits/stdc++.h> using namespace std; #define ll long long int main() { int T; cin >> T; int m; cin >> m; int b[m+1]; for(int i=1;i <= m;i++) //输入现在能够加的值 cin >> b[i]; sort(b+1,b+m); //必须要从小到大的顺序取 while(T--) { int n; cin >> n; int dp[10000] = {0}; for(int i=1;i < 7;i ++) { dp[b[i]] = 1; //这里是个小坑; for(int j=b[i];j <= n;j++) { if(dp[j-b[i]] != 0) dp[j] = dp[j-b[i]]+1; } } cout << dp[n] <<endl; } return 0; }
用贪心思想的话,如果不是1就不能搞了。我苦思一天,搞出来这个伪暴力算法!超强无敌!6666666666666