为什么这个循环是无限运行的

Why is this loop running infinitely?

本文关键字:无限 运行 循环 为什么      更新时间:2024-09-22
#include <bits/stdc++.h>
using namespace std;
void BookAllocation(vector<int> &v, int n) {
int Sum = 0, sum = 0, k = 1;
vector MX(k);
for (int i = 0; i < n - 1; i++) {
sum += v[i];
for (int j = i + 1; j < n; i++) {  
Sum += v[j];
}
k = max(Sum, sum);
MX.push_back(k);
k = 0;
Sum = 0;
}
int size = MX.size();
int Ans;
for (int i = 0; i < size; i++) {
Ans = min(MX[i], Ans);
}
cout << Ans;
}
int main() {
int n = 4;
vector v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
BookAllocation(v, n); // i'm just doing some book allocation question from leet code
return 0;
}

您的程序将永远不会因为这个循环而结束:

for (int j = i + 1; j < n; i++) {
Sum += v[j];
}

如果第一次为真,则CCD_ 1和CCD_。如此循环。

也许你想要:

for (int j = i + 1; j < n; ++j) {
Sum += v[j];
}

请尝试此

#include <iostream>
#include <vector>
void BookAllocation(std::vector<int> &v, int n) {
int Sum = 0, sum = 0, k = 1;
std:: vector<int> MX(k);
for (int i = 0; i < n - 1; i++) {
sum += v.at(i);
for (int j = i + 1; j < n; j++) {//notce j++ as @BO R mentioned
Sum += v.at(j);
}
k = max(Sum, sum);
MX.push_back(k);
k = 0;
Sum = 0;
}
int size = (int) MX.size(); // needs explicit cast because by default it returns uint
int Ans;
for (int i = 0; i < size; i++) {
Ans = min(MX.at(i), Ans);
}
std::cout << Ans;
}
int main() {
int n = 4;
std::vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v.at(i);
}
BookAllocation(v, n); // i'm just doing some book allocation question from leet code
return 0;
}