调试了一下,发现在cin>>ivec[num]好像报错,这样写不行吗?我感觉有点奇怪,希望有人能告诉我原理,当然也希望看一下后面有没有写错的。
出处pat乙级1005
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int num;
cin >> num;
vector<int> ivec(num);
vector<int> collect;
for (int i = 0; i != num; ++num) {
cin >> ivec[num];
int temp = ivec[num];
while (temp != 1) {
if (temp % 2 == 1) {
temp = (3 * temp + 1) / 2;
collect.push_back(temp);
}
else {
temp /= 2;
collect.push_back(temp);
}
}
}
vector<int> fcollect;
for (int i = 0; i != num; ++i) {
if (find(collect.begin(), collect.end(), ivec[i]) == collect.end()) {
fcollect.push_back(ivec[i]);
}
}
sort(fcollect.begin(), fcollect.end(), [](int a, int b) {return a > b; });
for (auto i : fcollect) {
auto it = fcollect.begin();
cout << i;
while (it != fcollect.end() - 1) {
cout << " ";
}
++it;
}
return 0;
}