01串排序 Time Limit:1000MS Memory Limit:32768K
10011111 00001101 1010101 1 0 1100
0 1 1100 1010101 00001101 10011111
尝试1
#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; }
#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 <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; }
#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 <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; }
#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 <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;
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
原文:http://www.cnblogs.com/2014acm/p/3876433.html