博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zjut 1204 01串排序
阅读量:5260 次
发布时间:2019-06-14

本文共 6848 字,大约阅读时间需要 22 分钟。

01串排序  Time Limit:1000MS  Memory Limit:32768K

Description:

将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。

 

Input:

输入数据中含有一些01串,01串的长度不大于256个字符。

Output:

重新排列01串的顺序。使得串按基本描述的方式排序。

Sample Input:

10011111000011011010101101100

Sample Output:

01110010101010000110110011111 尝试1
#include 
#include
#include
char s[10000][256];int cmp ( const void *a , const void *b ){ return strcmp((char*)a,(char*)b);}int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
View Code

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

char s[10000][256];

 

int cmp ( const void *a , const void *b )

         {         return strcmp((char*)a,(char*)b);      }

 

int main(int argc, char *argv[])

 

{  

           int i,n;  n=0;

 while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' )   n++;

       qsort(s,n,sizeof(s[0]),cmp);    

for (i=0; i<n; i++)   

     printf("%s\n",s[i]);   

   return 0;

}

尝试2
#include 
#include
#include
char s[10000][256];int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b;if ( strlen(x)!=strlen(y) ) return strlen(x)-strlen(y); }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
View Code

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char s[10000][256];

int cmp ( const void *a , const void *b )

{    

char *x=(char *)a,*y=(char *)b;

if ( strlen(x)!=strlen(y) )                  return  strlen(x)-strlen(y);        

     }

 

int main(int argc, char *argv[])

  int i,n;  

n=0;  

while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' )      n++;  

 

qsort(s,n,sizeof(s[0]),cmp);  

   for (i=0; i<n; i++)     

printf("%s\n",s[i]);    

 return 0;

}

 

 

 

 

 

尝试 3

#include 
#include
#include
char s[10000][256];int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b; int i=0,j=0;if ( strlen(x)!=strlen(y) ) return strlen(x)-strlen(y); while(x[i]) i++;while(y[j]) j++;if(i==j) return strcmp(x,y);if(i!=j) return i-j; }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
View Code

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

char s[10000][256];

int cmp ( const void *a , const void *b )

{       

 char *x=(char *)a,*y=(char *)b;  

        int i=0,j=0;

 

if ( strlen(x)!=strlen(y) )            return  strlen(x)-strlen(y);

 

               while(x[i])      i++;

             while(y[j])       j++;

if(i==j)           return strcmp(x,y);

if(i!=j)              return i-j;

}

int main(int argc, char *argv[])

  int i,n;  n=0;  

while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' )     n++;

  qsort(s,n,sizeof(s[0]),cmp);   

  for (i=0; i<n; i++)   

   printf("%s\n",s[i]);  

    return 0;

}

尝试4
#include 
#include
#include
char s[10000][256];int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b; int i=0,j=0; while(x[i]) i++;while(y[j]) j++;if ( strlen(x)!=strlen(y) ) return strlen(x)-strlen(y); else if ( strlen(x)==strlen(y) ) return i-j; else return strcmp(x,y); }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
View Code

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

char s[10000][256];

int cmp ( const void *a , const void *b )

{    

char *x=(char *)a,       *y=(char *)b;  

int i=0,j=0;  

 

while(x[i]) i++;

while(y[j]) j++;

 

  if ( strlen(x)!=strlen(y) )                             return  strlen(x)-strlen(y);

      else    if ( strlen(x)==strlen(y) )                 return i-j;

                    else                              return strcmp(x,y);  

}

int main(int argc, char *argv[])

{

   int i,n;

 n=0;  

while ( scanf("%s",s[n])!=EOF && s[n][0]!='#' )            n++;  

 

qsort(s,n,sizeof(s[0]),cmp);  

   for (i=0; i<n; i++)     

printf("%s\n",s[i]);    

 return 0;

}

 

 

***********************************************************************************************************************************************

#include 
#include
#include
char s[10000][256];int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b; int i=0,j=0,k; k=0; while(x[k]) {
if(x[k]=='1') i++; k++;} k=0; while(y[k]) {
if(y[k]=='1') j++; k++;} if ( strlen(x)!=strlen(y) ) return strlen(x)-strlen(y); //串长度 是否 相等 if (i!=j) return i-j; // 1 的个数 比较 return strcmp(x,y); //ASC||码 比较 }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
#include
#include
char s[10000][256];int one(char *x){ int c=0,i=0; while (x[i]!='\0') { if (x[i]=='1') c++; i++; } return c;}int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b; int i=one(x),j=one(y),k; if ( strlen(x)==strlen(y) ) if (i==j) return strcmp(x,y); else return i-j; else return strlen(x)-strlen(y); }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i
#include
#include
char s[10000][256];int one(char *x){ int c=0,i=0; while (x[i]!='\0') { if (x[i]=='1') c++; i++; } return c;}int cmp ( const void *a , const void *b ){ char *x=(char *)a,*y=(char *)b; int i=one(x),j=one(y),k; if ( strlen(x)!=strlen(y) ) return strlen(x)-strlen(y); if (i!=j) return i-j; return strcmp(x,y); }int main(int argc, char *argv[]){ int i,n; n=0; while ( scanf("%s",s[n])!=EOF ) n++; qsort(s,n,sizeof(s[0]),cmp); for (i=0; i

 

 

****************************************************************************************************************************************************

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char s[10000][256];

 

int cmp ( const void *a , const void *b )

{  

char *x=(char *)a,     *y=(char *)b;

 

int i=0,j=0,k;

 

k=0; 

     while(x[k])      i=i+x[k]-'0',        k++  ;

k=0 ;

      while(y[k])    j=j+y[k]-'0',        k++   ;

   if ( strlen(x)==strlen(y) )       

         if (i==j)     return strcmp(x,y);      

           else         return i-j;    

     else    return  strlen(x)-strlen(y);

}

 

int main(int argc, char *argv[])

 

  int i,n;

 

 n=0;

 while ( scanf("%s",s[n])!=EOF  )    n++;  

 

qsort(s,n,sizeof(s[0]),cmp);    

for (i=0; i<n; i++)     

printf("%s\n",s[i]);    

 return 0;

 

}

 

 

 

 

 

#include 
#include
#include
#include
#include
using namespace std;struct Comp{ bool operator ()(const string &s1,const string &s2) { if(s1.length()!=s2.length()) return s1.length()
ms; string s; while(cin>>s) { ms.insert(s); } for(multiset
::iterator it=ms.begin();it!=ms.end();it++) { cout<<*it<

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/2014acm/p/3876433.html

你可能感兴趣的文章
VLC 修改源码,添加对鼠标事件的响应
查看>>
8.7 每日课后作业系列之常用模板(介绍和运用)
查看>>
一个合格的前端应该要去阅读的文章
查看>>
2014世界杯决赛观后感
查看>>
Mysql对自增主键ID进行重新排序
查看>>
第二冲刺阶段第六天
查看>>
最简单的树上染色问题(没有之一)
查看>>
【转】VS2012发布网站详细步骤
查看>>
Liebig's Barrels
查看>>
圆边图片无限旋转
查看>>
算法第5章作业
查看>>
Oracle 创建表空间的时候显示 数据库未连接
查看>>
java中的运算符
查看>>
Windows 常用消息及含义
查看>>
环境部署
查看>>
English trip -- VC(情景课)5 C It's on Main Street 在主街上
查看>>
[剑指Offer] 20.包含min函数的栈
查看>>
Ant -----ant标签和自定义任务
查看>>
Docker: repository, image, container
查看>>
Dijkstra算法
查看>>