POJ 1007
2014-07-11 10:44
155 查看
原题网址:http://poj.org/problem?id=1007
题目大意:
输入n,m
m代表一共有m个字符串,n代表每个字符串含有n个字符。要求将这m个字符串按其逆序数从小到大排序,逆序数相同的字符串按其输入先后顺序排序。
比如DAABEC的逆序数是5,因为D大于后面的2个A 1个B 1个C,E大于后面的1个C,所以逆序数=2+1+1+1=5.
我的解题思路:
①用结构体存放所有数据
typedef struct{
char str[MAX];//MAX=110
int num;//每个字符串的逆序数
int sno;//每个字符串的序号
}DNA
DNA dna[MAX];
②利用qsort()快排,先按逆序数不同的从小到大排,如果逆序数相等则按每个字符串的序号从小到大排
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 110
typedef struct{
char str[MAX];
int num;//每个字符串的逆序数
int sno;//每个字符串的序号
}DNA;
DNA dna[MAX];
int compare(const void *a,const void *b)
{
DNA c=*(DNA *)a;
DNA d=*(DNA *)b;
if(c.num!=d.num)
{
return c.num-d.num;
}
else
{
return c.sno-d.sno;
}
}
int main()
{
int n,m;//n代表每个字符串的长度,m代表一共有m个字符串
int i;
int j;
int k;
int sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<m;i++)
{
getchar();
sum=0;
for(j=0;j<n;j++)
{
scanf("%c",&dna[i].str[j]);
}
for(j=0;j<n;j++)
{
for(k=j;k<n;k++)
{
if(dna[i].str[j]>dna[i].str[k])
{
sum++;
}
}
}
dna[i].num=sum;
dna[i].sno=i;
}
qsort(dna,m,sizeof(dna[0]),compare);
for(i=0;i<m;i++)
{
puts(dna[i].str);
}
}
return 0;
}
题目大意:
输入n,m
m代表一共有m个字符串,n代表每个字符串含有n个字符。要求将这m个字符串按其逆序数从小到大排序,逆序数相同的字符串按其输入先后顺序排序。
比如DAABEC的逆序数是5,因为D大于后面的2个A 1个B 1个C,E大于后面的1个C,所以逆序数=2+1+1+1=5.
我的解题思路:
①用结构体存放所有数据
typedef struct{
char str[MAX];//MAX=110
int num;//每个字符串的逆序数
int sno;//每个字符串的序号
}DNA
DNA dna[MAX];
②利用qsort()快排,先按逆序数不同的从小到大排,如果逆序数相等则按每个字符串的序号从小到大排
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 110
typedef struct{
char str[MAX];
int num;//每个字符串的逆序数
int sno;//每个字符串的序号
}DNA;
DNA dna[MAX];
int compare(const void *a,const void *b)
{
DNA c=*(DNA *)a;
DNA d=*(DNA *)b;
if(c.num!=d.num)
{
return c.num-d.num;
}
else
{
return c.sno-d.sno;
}
}
int main()
{
int n,m;//n代表每个字符串的长度,m代表一共有m个字符串
int i;
int j;
int k;
int sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<m;i++)
{
getchar();
sum=0;
for(j=0;j<n;j++)
{
scanf("%c",&dna[i].str[j]);
}
for(j=0;j<n;j++)
{
for(k=j;k<n;k++)
{
if(dna[i].str[j]>dna[i].str[k])
{
sum++;
}
}
}
dna[i].num=sum;
dna[i].sno=i;
}
qsort(dna,m,sizeof(dna[0]),compare);
for(i=0;i<m;i++)
{
puts(dna[i].str);
}
}
return 0;
}
相关文章推荐
- poj-1007 简单排序
- POJ 1007 DNA Sorting
- POJ 1007 DNA 排序
- POJ1007-DNA Sorting
- POJ-1007
- POJ 1007 DNA Sorting
- STL 应用2 POJ 1007 DNA Sorting 题解 (STL完美解答)
- (POJ 1007)DNA Sorting
- POJ 1007
- POJ 1007
- POJ 1007 DNA Sorting
- POJ 1007.DNA Sorting
- POJ_1007_DNA Sorting
- poj 1007
- 【POJ】1007 DNA Sorting
- poj 1007
- POJ 1007
- poj1007 树状数组逆序对
- poj-1007-DNA Sorting
- POJ 1007 DNA Sorting