题目描述
将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序
输入
输入数据中含有一些01串,01串的长度不大于256个字符。
输出
重新排列01串的顺序。使得串按基本描述的方式排序。
样例输入
10011111
00001101
1010101
1
0
1100
样例输出
0
1
1100
1010101
00001101
10011111
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
char a[256][256],str[256];
int i,j,k,m1,m2,n;
i=0;
while(scanf("%s",a[i])!=EOF)
{
i++;
}
for (j=0;j<i;j++)
for (k=j;k<i;k++)
{
if(strlen(a[j])>strlen(a[k]))
{
strcpy(str,a[j]);
strcpy(a[j],a[k]);
strcpy(a[k],str);
} else if(strlen(a[j])==strlen(a[k]))
{
m1=0;
m2=0;
for (n=0;n<strlen(a[j]);n++)
{
if(a[j][n]=='1')
m1++;
if(a[k][n]=='1')
m2++;
}
if(m1>m2)
{
strcpy(str,a[j]);
strcpy(a[j],a[k]);
strcpy(a[k],str);
} else if(m1==m2)
{
if(strcmp(a[j],a[k])>0)
{
strcpy(str,a[j]);
strcpy(a[j],a[k]);
strcpy(a[k],str);
}
}
}
}
for (j=0;j<i;j++)
printf("%sn",a[j]);
return 0;
}
解析
暂无