【发布时间】:2020-10-15 13:12:52
【问题描述】:
我的程序应该用偶数个零替换组,它们连续使用两个零,奇数个零的组只替换一个零。如果输入没有零,则应保持原样。我编写了以下代码来解决这个问题。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "Enter an array size:\n";
cout << "n = ";
cin >> n;
vector<int> arr(n);
vector<int> temp_arr(n);
cout << "Enter an array:\n";
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = arr.size() - 1; i >= 1; i--) {
if (arr[i] == arr[i - 1] && arr[i] == 0){
temp_arr.push_back(i);
}
else if (arr[i] != 0) {
if (temp_arr.size() % 2 == 1) {
arr.erase(arr.begin() + i);
temp_arr.clear();
}
else if (temp_arr.size() % 2 == 0){
arr.erase(arr.begin() + i);
arr.insert(arr.begin() + i , 0);
temp_arr.clear();
}
}
}
cout << "Output of the program:\n";
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << " ";
}
system("pause");
return 0;
}
但编译后我得到了这个:
整个数组都被零替换了。
我做错了什么?
【问题讨论】:
-
你好,如果输入没有零,应该保持原样,对吗?
-
@Lingo 是的,你是对的。