#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void swap(int *x,int *y){
int tmp=0;
tmp=*x;
*x=*y;
*y=tmp;
}
void bubble(int *a,int c){
for(int i=c-1;i>0;i--){
for(int j=0;j<i;j++){
if(a[j]<a[j+1]){
swap(&a[j],&a[j+1]);
}
}
}
}
int main()
{
int n;
while(cin>>n){
vector<int>c;
int a[n]={},g[n]={},v[n]={};
for(int i=0;i<n;i++){
cin>>a[i];
g[i]=a[i]%10;
}
sort(g,g+n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(g[i]==a[j]%10)swap(&a[i],&a[j]);
}
}
int count,tmp=-1;
for(int i=0;i<n;i++){
count=1;
if(g[i]!=tmp){
for(int j=i+1;j<n;j++){
v[0]=a[i];
if(g[j]==g[i]){
v[count]=a[j];
c.push_back(j);
count++;
tmp=g[i];
}
}
if(count>1){
bubble(v,count);
a[c[0]-1]=v[0];
for(int m=0;m<c.size();m++){
a[c[m]]=v[m+1];
}
}
for(int k=0;k<count;k++){
v[k]={0};
}
c.clear();
}
}
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}
在其他地方測試都沒問題,請問是哪裡出錯了
您的答案為: 1908625348 1647658651 1218682121 397319292 1222775013 1819377786 1838866208 1485052521 1387193879 262799669 正確答案為: 1647658651 1485052521 1218682121 397319292 1222775013 1819377786 1908625348 1838866208 1387193879 262799669