在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
int arr[120]; arr数组长度设置的太小了
改成 int arr[10000];
arr数组没有初始化为0
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!