我正在尝试将cin
中的输入元素作为cin>>ngarmy[]i
但是在整个程序中所有元素都保持为零
谁能告诉我向量的问题吗?
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector <int> ngarmy(100);
vector <int> nmarmy(100);
int main() {
int t;
cin >> t;
while (t--) {
int ng, nm;
cin >> ng >> nm;
for (int i = 0; i < ng; i++) {
cin >> ngarmy[i];
}
for (int i = 0; i < nm; i++) {
cin >> nmarmy[i];
}
sort(ngarmy.begin(), ngarmy.end());
sort(nmarmy.begin(), nmarmy.end());
int i = 0, j = 0;
int ans = 0;
while (1) {
if (ngarmy[i] < nmarmy[j]) {
i++;
if (i == ng) {
ans = 1;
break;
}
}
else {
j++;
if (j == nm) {
ans = 2;
break;
}
}
}
if (ans == 1)
cout << "MechaGodzilla" << endl;
else
cout << "Godzilla" << endl;
}
}
答案 0 :(得分:4)
向量的大小为100,但大多数为零,因为您没有100个输入。在对向量进行排序时,所有零都到达向量的开头,因为零是最小的数字。
您错误地读取了向量。不要使向量的大小始终为100
,而应使它们的大小与输入的数目相同。以零大小开始向量,并在读取数字时使用push_back
来增加向量的大小。
赞
vector <int> ngarmy; // vectors are size zero
vector <int> nmarmy;
for (int i = 0; i < ng; i++) {
int n;
cin >> n;
ngarmy.push_back(n); // add n to the vector
}
for (int i = 0; i < nm; i++) {
int n;
cin >> n;
nmarmy.push_back(n); // add n to the vector
}
或者按照评论中的建议,您可以resize
将向量调整为正确的大小
vector <int> ngarmy;
vector <int> nmarmy;
ngarmy.resize(ng);
for (int i = 0; i < ng; i++) {
cin >> ngarmy[i];
}
nmarmy.resize(nm);
for (int i = 0; i < nm; i++) {
cin >> nmarmy[i];
}