趋势科技第二题
#include<iostream>
#include<vector>
using namespace std;
vector<int> res1(6);//存满足的组合
vector<int> res;//存每种满足组合的长度
void sift(vector<int> &RES,vector<int> &nums) {//根据张数要求,算最大面值符合组合
if (nums[5] < RES[5]) {//100多的转换到50
RES[4] += (RES[5] - nums[5]) * 2;
res1[5] = nums[5];
}
if (nums[4] < RES[4]) {//50多的转换到20和10
RES[3] += (RES[4] - nums[4]) * 2;
RES[2] += (RES[4] - nums[4]);
RES[4] = nums[4];
}
if (nums[3] < RES[3]) {//20多的转换到10
RES[2] += (RES[3] - nums[3]) * 2;
RES[3] = nums[3];
}
if (nums[2] < RES[2]) {//10多的转换到5
RES[1] += (RES[2] - nums[2]) * 2;
RES[2] = nums[2];
}
if (nums[1] < RES[1]) {//5多的转换到1
RES[0] += (RES[1] - nums[1]) * 5;
RES[1] = nums[1];
}
if (RES[0] > nums[0]) {
for (int i = 0; i < RES.size(); i++) {
RES[i] = 0;
}
}
}
void fuc2() {//存入长度
int num = 0;
for (int i = 0; i < res1.size(); i++) {
num += res1[i];
}
res.push_back(num);
}
void fuc1(int target, vector<int> nums) {
int cptarget = target;
int num100 = cptarget / 100;
res1[5] = num100;
cptarget -= num100 * 100;
int num50 = cptarget / 50;
res1[4] = num50;
cptarget -= num50 * 50;
int num20 = cptarget / 20;
res1[3] = num20;
cptarget -= num20 * 20;
int num10 = cptarget / 10;
res1[2] = num10;
cptarget -= num10 * 10;
int num5 = cptarget / 5;
res1[1] = num5;
cptarget -= num5 * 5;
int num1 = cptarget;
res1[0] = num1;
sift(res1, nums);
fuc2();
while (res1[0]<=nums[0]) {
if (res1[5]!=0) {
nums[5]=res1[5]-1;
sift(res1, nums);
fuc2();
continue;
}
if (res1[4] != 0) {
nums[4]=res1[4]-1;
sift(res1, nums);
fuc2();
continue;
}
if (res1[3] != 0) {
nums[3]=res1[3]-1;
sift(res1, nums);
fuc2();
continue;
}
if (res1[2] != 0) {
nums[2]=res1[2]-1;
sift(res1, nums);
fuc2();
continue;
}
if (res1[1] != 0) {
nums[1]=res1[1]-1;
sift(res1, nums);
fuc2();
continue;
}
if (res1[1] == 0 && res1[2] == 0 && res1[3] == 0 && res1[4] == 0 && res1[5] == 0) {
break;
}
}
}
int main() {
vector<int> nums(6);
for (int i = 0; i < 6; i++) {
int temp;
cin >> temp;
nums[i] = temp;
}
int target;
cin >> target;
fuc1(target, nums);
int len = 0;
for (int i = 0; i < res.size(); i++) {
len += res[i];
}
cout << len;
system("pause");
return 0;
}
#笔试题目##趋势科技#

