首页 > 代码库 > zjut 1044 按1的个数排序
zjut 1044 按1的个数排序
按1的个数排序 Time Limit:1000MS Memory Limit:32768K
Description:
有一些01字串,将其按1的个数的多少的顺序进行输出。
Sample Input:
10011111000011011010101101100
Sample Output:
01110000001101101010110011111
#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 (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<iostream>#include<cstring>#include<string>#include<algorithm>using namespace std;int f(string a){ int i,sum=0;for(i=0;a[i];i++)if(a[i]==‘1‘) sum++;return sum;}bool cmp(string a,string b){ if(a.size()!=b.size()) return a.size()<b.size();else{if(f(a)<f(b)) return 1; if(f(a)==f(b)) {if(a<b) return 1;}}return 0;}int main(){string a[1000];int i=0,j;while(cin>>a[i]) i++; sort(a,a+i,cmp);for(j=0;j<i;j++)cout<<a[j]<<endl;return 0;}**********************#include <cstdio>#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;bool MyComp(const string &s1,const string &s2){ 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(){ vector<string>vstr; string str; while(cin>>str) { vstr.push_back(str); } sort(vstr.begin(),vstr.end(),MyComp); for(vector<string>::iterator it=vstr.begin();it<vstr.end();it++) { cout<<*it<<endl; } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。