#30077: WA:line5


u11031129 (德州土蛋)

學校 : 臺北市立麗山高級中學
編號 : 177630
來源 : [220.129.201.66]
最後登入時間 :
2024-04-13 02:02:06
a225. 明明愛排列 | From: [36.225.7.251] | 發表日期 : 2022-04-26 18:43

#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
 
#30078: Re: WA:line5


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [101.136.203.77]
最後登入時間 :
2024-04-07 15:34:14
a225. 明明愛排列 | From: [27.246.161.196] | 發表日期 : 2022-04-26 20:19


        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 j=0改成int j=i+1

不過你既然都用內建的sort()了,為何不完全用sort()來排序呢?

 
ZeroJudge Forum