#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int ma(float array[], int N)
{
int k = 0;
float max = array[k];
for (int i = 0; i < N; ++i) {
if (array[i] > max) {
max = array[i];
k = i;
}
}
return k;
}
int main()
{
int t;
while (t--) {
int n;
cin >> n;
int w[n], p[n];
for (int i = 0; i < n; i++)
cin >> w[i];
for (int i = 0; i < n; i++)
cin >> p[i];
float x[n];
for (int i = 0; i < n; i++)
x[i] = p[i] / w[i];
int weigth = 0, profit = 0;
while (weigth <= 20) {
// int k=distance(x, max_element(x, x + n));
// int k= std::distance(x, max_element(x, x + sizeof(x)/sizeof(x)));
int k = ma(x, n);
weigth = weigth + w[k];
profit = profit + p[k];
x[k] = p[k] = w[k] = 0;
}
cout << weigth << endl
<< profit << endl;
}
}
以上代码不打印任何内容。如果您想要问题,请参阅"catch-the-match":
答案 0 :(得分:2)
你的代码甚至没有编译,
你不能在C ++中做到这一点
int n;
cin >> n;
int w[n], p[n];
因为n在编译时必须是常量,另一方面这样做:
int t;
while (t--) {
在循环中产生不可预测的迭代次数,因为t未初始化
答案 1 :(得分:0)
您必须将int n
声明为const int n
才能使代码正确编译。