Question:http://poj.org/problem?id=1007
问题点:逆序数及快排。
1 Memory: 248K Time: 0MS
2 Language: C++ Result: Accepted
3
4 #include <iostream>
5 #include <string>
6 #include <stdlib.h>
7
8 using namespace std;
9 struct nm
10 {
11 char str[50];
12 int cnt;
13 };
14 int mycmp(const void *a,const void *b)
15 {
16 nm *nma=(nm*)a;
17 nm *nmb=(nm*)b;
18 return nma->cnt-nmb->cnt;
19 }
20 int main()
21 {
22 int n,m;
23 nm NM[100];
24 cin>>n>>m;
25 memset(NM,0,sizeof(NM));
26 for(int i=0;i<m;i++)
27 {
28 cin>>NM[i].str;
29 int len=strlen(NM[i].str);
30 for(int j=0;j<len;j++)
31 {
32 for(int k=j+1;k<len;k++)
33 {
34 if(NM[i].str[j]>NM[i].str[k]) NM[i].cnt++;
35 }
36 }
37 }
38 qsort(NM,m,sizeof(nm),mycmp);
39 for(int i=0;i<m;i++)
40 {
41 cout<<NM[i].str<<endl;
42 }
43 return 0;
44 }