首页 > 其他 > 详细

zjut 1204 01串排序

时间:2014-07-30 00:22:32      阅读:478      评论:0      收藏:0      [点我收藏+]

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

Description:

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

 

Input:

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

Output:

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

Sample Input:

10011111
00001101
1010101
1
0
1100

Sample Output:

0
1
1100
1010101
00001101
10011111




尝试1
bubuko.com,布布扣
#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;
}
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
bubuko.com,布布扣
#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;
}
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

bubuko.com,布布扣
#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;
}
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



bubuko.com,布布扣
#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;
}
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 <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]) {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; 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<n; i++) printf("%s\n",s[i]); return 0; } ******************************** #include <stdio.h> #include <stdlib.h> #include <string.h> 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<n; i++) printf("%s\n",s[i]); return 0; } ********************************************** #include <stdio.h> #include <stdlib.h> #include <string.h> 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<n; i++) printf("%s\n",s[i]); return 0; }

 

 

 

#include <cstdio>
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;

struct Comp
{
    bool operator ()(const string &s1,const string &s2)
    {
        if(s1.length()!=s2.length()) return s1.length()<s2.length();
        int c1=count(s1.begin(),s1.end(),1);
        int c2=count(s2.begin(),s2.end(),1);
        return (c1!=c2?c1<c2:s1<s2);
    }
};
int main()
{
    multiset<string,Comp>ms;
    string s;
    while(cin>>s)
    {
        ms.insert(s);
    }
    for(multiset<string,Comp>::iterator it=ms.begin();it!=ms.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}

 

 

 

 

 

 

 

zjut 1204 01串排序,布布扣,bubuko.com

zjut 1204 01串排序

原文:http://www.cnblogs.com/2014acm/p/3876433.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!