问题遇到的现象和发生背景
在pat 1005 继续(3n+1)猜想 (25 分)中,在测试点3和测试点4发生段错误。
问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
#include <algorithm>
bool cmp(int a, int b) {
return a > b;
}
int arr[120];
int num[120];
int main() {
int k = 0;
cin >> k;
int u = k;
int n = 0, i = 0;
while (u--) {
cin >> n;
num[i++] = n;
while (n != 1) {
if (n % 2) {
n = (3 * n + 1) / 2;
}
else {
n /= 2;
}
arr[n]++;
}
}
sort(num, num + k, cmp);
int flag = 0;
for (int j = 0; j < k; j++) {
if (arr[num[j]] == 0) {
if (flag == 0) {
flag = 1;
}
else {
cout << " ";
}
cout << num[j];
}
}
return 0;
}
运行结果及报错内容
运行结果:
7 6