poj1007-DNA Sorting(排序),poj1007-dnasorting
一,題意:
輸入N個字符串,按照字符串的逆序數由最少到最大開始輸出。
注意:如果逆序數相同,就原來順序輸出。
二,思路步驟:
1,輸入,並用a[]存儲每行字符串的逆序數;
2,冒泡排序a[]的同時換掉str[][]的順序;
3,輸出。
1 #include<iostream>
2 #include<cstring>
3 using namespace std;
4 int main(){
5 char str[105][55];
6 int a[105];
7 char ch[105];
8 int n , m ;
9 cin>>m>>n;
10 //輸入並算出沒行的字符串的逆序數並存儲
11 for(int i = 0 ; i < n ; i++){
12 cin>>str[i];
13 int count = 0 ;
14 for(int j = 0 ; j < m ; j++){
15 for(int k = 0 ; k < j ; k++){
16 if(str[i][j]<str[i][k])
17 count++; //記錄逆序數
18 }
19 }
20 a[i]=count; //a[]存儲每一行的逆序數
21 }
22
23 //將str冒泡重新排序
24 for(int i = 0 ; i < n ; i++){
25 for(int j = 0 ; j < n - i - 1 ; j++){
26 if(a[j]>a[j+1]){
27 int temp = a[j];
28 a[j] = a[j+1];
29 a[j+1] = temp;
30 strcpy(ch,str[j]);
31 strcpy(str[j],str[j+1]);
32 strcpy(str[j+1],ch);
33 }
34 }
35 }
36 //輸出
37 for(int i = 0 ; i < n ; i++)
38 cout<<str[i]<<endl;
39 return 0;
40 }
View Code
版權聲明:本文為博主原創文章,未經博主允許不得轉載。