#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,m,i,j,p;
cin >> n;
int a[n][50],b[n],c[n];
for(i=0;i<n;i++)
{
cin >> a[i][0];
}
for(i=0;i<n;i++)
for(p=1;p>=0;p++){
if(a[i][p-1]==1){
c[i]=p;
break;
}
else if(a[i][p-1]%2==0){
a[i][p]=a[i][p-1]/2;
}
else if(a[i][p-1]%2!=0){
a[i][p]=a[i][p-1]*3+1;
}
}
for(j=0;j<n;j++){
b[j]=a[j][0];
for(i=0;i<n;i++){
for(m=0;m<c[i];m++){
if(a[j][0]==a[i][0])
break;
else if(a[j][0]==a[i][m]){
b[j]=0;}
}
}
}
sort(b,b+(n-1),cmp);
for(i=0;i<n;i++)
{
if(b[i]!=0){
cout << b[i];
if(b[i+1]!=0)
cout <<" ";
else cout <<endl;
}
}
return 0;
}
pta乙级1005 部分错误,帮帮忙
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
dark_and_white 2021-10-13 18:57关注我自己又改了一下
#include<iostream> #include<algorithm> using namespace std; int main() { int n,m,i,j,p; cin >> n; int a[n][10000],b[n],c[n]; for(i=0;i<n;i++) { cin >> a[i][0]; } for(i=0;i<n;i++) for(p=1;p>=0;p++){ if(a[i][p-1]==1){ c[i]=p; break; } else if(a[i][p-1]%2==0){ a[i][p]=a[i][p-1]/2; } else if(a[i][p-1]%2!=0){ a[i][p]=a[i][p-1]*3+1; } } for(j=0;j<n;j++){ b[j]=a[j][0]; for(i=0;i<n;i++){ for(m=0;m<c[i];m++){ if(a[j][0]!=a[i][0]){ if(a[j][0]==a[i][m]) b[j]=0; } } } } sort(b,b+n,greater<int>()); for(i=0;i<n;i++) { if(b[i]!=0){ cout << b[i]; if(b[i+1]!=0) cout <<" "; else cout <<endl; } } return 0; }解决 无用评论 打赏 举报