本文共 1157 字,大约阅读时间需要 3 分钟。
以前自己存的代码了,看标题也不能回忆起来是啥意思,居然没留下来是什么题。。。先放在这把
#includeusing namespace std;int w[6] = { 1,5,10,50,100},num[5],use[5];bool dfs(int v,int x){ if (x < 0) return false; int n = v / w[x]; if (num[x] >= n){ num[x] -= n; use[x] += n; return true; } if (dfs(v - num[x]*w[x],x-1)){ use[x] += num[x]; num[x] = 0; return true; } else return false;}int main(){ int n,m; cin >> n; while (n--){ cin >> m; for (int i = 0;i <= 4;i++) cin >> num[i]; int x = m,ans1 = 0,ans2 = 0; for (int i = 4;i >= 0;i--){ use[i] = min(num[i],x / w[i]); ans1 += use[i]; x -= use[i] * w[i]; num[i] -= use[i]; } if (x){ cout << "-1 -1" << endl; continue; } for (int i = 4;i >= 0;i--){ while (use[i]){ if (dfs(w[i],i-1)){ use[i]--; num[i]++; } else break; } ans2 += use[i]; } cout << ans1 << ' ' << ans2 << endl; }}
转载地址:http://ocbci.baihongyu.com/