若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1616: 01串排序

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,097

题目描述

将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;
}

解析

暂无

hustoj

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Skip Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist