下面的代码没有打印任何东西

Below Code is not printing anything

本文关键字:打印 任何东 代码      更新时间:2023-10-16
#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;
    }
}

上面的代码没有打印任何东西。如果您想要这个问题,请参考"接球匹配":

您的代码甚至没有编译,

您不能在C

中执行此操作
int n;
cin >> n;
int w[n], p[n];

因为n在编译时间时必须是一个常数,另一方面是这样做的:

int t;
while (t--) {

由于t不是初始化

,在循环中产生了不可预测的迭代次数

您必须将int n声明为const int n,以使您的代码正确编译。