Code sắp xếp các số theo thứ tự tổng các chữ số tăng dần bị sai

Viết chương trình sắp xếp các số này theo thứ tự tổng các chữ số tăng dần. Tức là, tổng các chữ số của số đứng trước nhỏ hơn hoặc bằng tổng các chữ số của số đứng sau. Nếu hai số có tổng các chữ số bằng nhau, thì số nhỏ hơn sẽ đứng trước

Bài làm của em bị failed hidden test, em ko biết đã sai ở đâu hay thiếu trường hợp nào, nhờ mọi người giúp em với :<

#include<bits/stdc++.h>
using namespace std;

int sumChar(int n) {
    int k=0;
    int num=n;
    while(num!=0){
        k+=(num%10);
        num=num/10;
    }
    return k;
}
int main(){
    int n;
    cin>>n;
    int a[n];
    for (int i=0; i<n; i++) {
        cin >> a[i];
    }
    for(int i=0; i<n-1; i++) {
        int min=sumChar(a[i]);
        int index=i;
        for(int j=i+1; j<n; j++){
            if(sumChar(a[j])<=min){
                min=sumChar(a[j]);
                index=j;
            }
        }
        swap(a[index],a[i]);
    }
    for(int i=0; i<n-1; i++){
        for(int j=1+1; j<n; j++) {
            if(sumChar(a[j])==sumChar(a[i]) && a[j]<a[i]){
                swap(a[i],a[j]);
            }
        }
    }
    for(int i=0; i<n; i++) {
        cout << a[i] << endl;
    }

}
8
10 11 -12 31 13 -21 -998 -989

expected

 -998 -989 -21 -12 10 11 13 31

output

 -989
 -998
 -12
 -21
 10
 11
 13
 31

còn chỗ sai á?

for(int i=0; i<n-1; i++){
        for(int j=1+1; << ..) {
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?