考題日期:2013/10/01
題號:612
星等:2
語言:C++
題目:
題意:
給予一些長度相同的字串,並依照其「未排序」程度排序並輸出。「未排序」的程度是以各字元間彼此的大小關係來計算的。例如在字串 DAABEC中,「未排序」的程度為 5,因為D比它右邊的4個字元大,E比它右邊的1個字元大。而字串AACEDGG「未排序」的程度為 1,以此類推。
程式:
#include <iostream>
#include<algorithm>
using namespace std;
struct data{
char letter[50];
int num = 0;
};
bool cmp(data x,data y)
{
return x.num < y.num;
}
int main()
{
int test,n,m;
cin>>test;
for(int i = 0 ; i < test ; i++)
{
if(i>0)
cout<<endl;
cin>>n>>m;
struct data g[m];
data *c = g;
for(int j = 0 ; j < m ; j++)
{
for(int k = 0 ; k < n ; k++)
{
cin>>c[j].letter[k];
}
}
for(int j = 0 ; j < m ; j++)
{
for(int k = 0 ; k < n-1 ; k++)
{
for(int l = k ; l < n ; l++)
{
if(int(c[j].letter[k]) > int(c[j].letter[l]))
c[j].num++;
}
}
}
sort(g,g+m,cmp);
for(int j = 0 ; j < m ; j++)
{
if(j>0)
cout<<endl;
for(int k = 0 ; k < n ; k++)
{
cout<<c[j].letter[k];
}
}
}
return 0;
}
測資: