2018/9/1
POJ 1007
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#define pi 3.141592654
using namespace std;
struct dna
{
char str[100];
int ans;
};
struct dna d[100];
struct dna t;
int main()
{
int n, m, k;
scanf("%d%d", &n, &m);
for(int i = 0; i < m; i++){
scanf("%s", d[i].str);
d[i].ans = 0;
for(int j = 0; j < n; j++)
for(int k = j; k < n; k++)
if(d[i].str[j] > d[i].str[k])
d[i].ans++;
}
for(int i = 0; i < m; i++)
for(int j = i; j < m; j++)
if(d[i].ans > d[j].ans){
t = d[i];
d[i] = d[j];
d[j] = t;
}
for(int i = 0; i < m; i++)
printf("%s\n", d[i].str);
return 0;
}
快排版:
#include <iostream>
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#define pi 3.141592654
using namespace std;
struct dna
{
char str[100];
int ans;
};
struct dna d[100];
bool cmp(const dna &a, const dna &b)
{
if(a.ans < b.ans)
return 1;
return 0;
}
int main()
{
int n, m, k;
scanf("%d%d", &n, &m);
for(int i = 0; i < m; i++){
scanf("%s", d[i].str);
d[i].ans = 0;
for(int j = 0; j < n; j++)
for(int k = j; k < n; k++)
if(d[i].str[j] > d[i].str[k])
d[i].ans++;
}
sort(d, d + m, cmp);
for(int i = 0; i < m; i++)
printf("%s\n", d[i].str);
return 0;
}