64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main(int argc, const char* argv[])
{
int n,a,b = 0;
bool convert = false;
cout << "Input Total Money:";
cin >> n;
cout << "Input A Price:";
cin >> a;
cout << "Input B Price:";
cin >> b;
if ((n < a) || (n < b)) {
cout << "Invalid arguments" << endl;
return -1;
}
if (b > a) { // 将价高者放在 a 上
cout << "Choose more B" << endl;
int c = a;
a = b;
b = c;
convert = true;
cout << "After convert -- A: " << a << ", B: " << b << endl;
}
int i = 0;
int j = 0;
int max_sum = 0;
int max_price = 0;
int max_i = 0;
int max_j = 0;
for (i = 0; i < n/a + 1; ++i) {
for (j = 0; j < (n - i * a)/b + 1; ++j) {
if ((i + j) >= max_sum) { // 记录数量最高,且偏贵者最多的
if (i >= max_i) {
max_sum = i + j;
max_i = i;
max_j = j;
}
}
}
}
if (convert) {
int c = max_i;
max_i = max_j;
max_j = c;
}
cout << "Choose " << max_i << " A" << endl;
cout << "Choose " << max_j << " B" << endl;
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n, a, b;
cin >> n >> a >> b;
pair<int, int> num{0,0};
int A, B;
for (int i = 0; i <= max(n / a, n / b); ++i) {
A = i;
B = (n - A * a) / b;
if (A + B > num.first + num.second||
A + B == num.first + num.second && A * a + B * b > num.first * a + num.second * b )
num = { A,B };
}
cout << num.first << " " << num.second << endl;
return 0;
}