#include <stdio.h> #include <string.h> int main(){ int n,m,len,temp; //输入1:2个整数,0<n<=50,0<m<=100 while(scanf("%d %d", &n, &m)!=EOF){ char strs[m+1][n+1],str[n]; int tags[m+1]; for(int i=0; i<m; i++) tags[i]=0; for(int i=0; i<m; i++){ //输入2:m个字符串 scanf("%s", strs[i]); len = strlen(strs[i]); //处理1:计算逆序数,存入数组 for(int j=0; j<len; j++){ for(int k=j+1; k<len; k++){ if(strs[i][j]>strs[i][k]){ tags[i]+=1; } } } } //处理2:根据逆序数从小到大排序 // for(int i=0; i<m-1; i++){ // int min=i; // for(int j=i+1; j<m; j++){ // if(tags[min]>tags[j]) min=j; // } // if(min!=i){ // temp = tags[min]; // tags[min] = tags[i]; // tags[i] = temp; // strcpy(str, strs[min]); // strcpy(strs[min], strs[i]); // strcpy(strs[i], str); // } // // } //输出:m个字符串,根据逆序数从小到大输出字符串 for(int i=0; i<m; i++){ int min=0; for(int j=0; j<m; j++){ if(tags[min]>tags[j]) min=j; } printf("%s\n", strs[min]); tags[min]=100000; } } } |
Double click to view unformatted code.