POJ - 1007

#include 
#include 
int GetInvValue(char x[], int len) {
    int inv = 0;
    for (int i = 0; i < (len - 1); i++) {
        for (int j = (i + 1); j < len; j++) {
            int a, b;
            a = x[i];
            b = x[j];
            if (a > b) {
                inv += (a-b);
            }
        }
    }
    return inv;
}

int main() {
    int len, n;
    char c[100][51];
    scanf("%d%d", &len, &n);
    for (int i = 0; i < n; i++) {
        scanf("%s",c[i]);
    }
    for (int j = 0; j < n-1; j++) {
        char temp[51];
        for (int i = 0; i < n-1-j;i++) {
            if (GetInvValue(c[i], len) > GetInvValue(c[i+1], len)) {
                //printf("\n--%s vs %s", c[i], c[i + 1]);
                strcpy(temp, c[i + 1]);
                strcpy(c[i + 1],c[i]);
                strcpy(c[i], temp);
                //printf("comes to %s vs %s--\n",c[i],c[i+1]);
            }
        }
    }

    //for (int j = 0; j < n; j++) {
    //  printf("%s\n", c[j]);
    //  getchar();
    //}

    printf("%s\n", c[0]);
    for (int i = 1; i < n; i++) {
        printf("%s\n", c[i]);
        //getchar();
    }
    //getchar();
}

你可能感兴趣的:(POJ - 1007)