一、技术总结
- 一个是注意输出格式,也就是末尾没有空格,这个解决方法一般是使用一个计数,然后打印输出一个就减少一个。
- 就是在使用数组时,要注意段错误,也就是数组开辟的是否够大。
- 如果可以的话,可以多设置几个数组,用于清晰的记录,可以防止后面的代码冗余复杂。
二、参考代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
bool hashTable[10000] = {0};
bool cmp(int a, int b){
return a > b;
}
int main(){
int n,m,a[110];
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
m = a[i];
while(m != 1){
if(m % 2 == 1){
m = (3*m + 1) / 2;
}else{
m = m / 2;
}
hashTable[m] = true;
}
}
int count = 0;
for(int i = 0; i < n; i++){
if(hashTable[a[i]] == false){
count++;
}
}
sort(a, a+n, cmp);
for(int i = 0; i < n; i++){
if(hashTable[a[i]] == false){
cout << a[i];
count--;
if(count > 0) cout << " ";
}
}
return 0;
}