问题描述 :
知道逆序树是什么之后,就只要进行计算就行了,简单的说 :水题
我使用的方法就是先把字符串都放在一个二维数组中,之后给这个二维数组里面的数据求其
逆序数,之后再用选择排序就可以了。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
#define INF 0x3f3f3f3f
int n,m,Min,cnt;
char str[200][200];
int Value[200];
int main( void ){
while(scanf("%d%d",&n,&m) != EOF){
memset(Value,0,sizeof(Value));
for(int i = 0;i < m;i++){
scanf("%s",str[i]);
}
for(int i = 0;i < m;i++){
cnt = 0;
for(int j = 0;j < n;j++){
for(int k = j+1;k < n;k++){
if(str[i][j] > str[i][k])
cnt++;
}
}
Value[i] = cnt;
}
Min = 0;
for(int i = 0;i < m;i++){
for(int j = 0;j < m;j++){
if(Value[j] < Value[Min]){
Min = j;
}
}
printf("%s\n",str[Min]);
Value[Min] = INF;
}
}
return 0;
}