zoukankan      html  css  js  c++  java
  • zjut 1044 按1的个数排序

    按1的个数排序  Time Limit:1000MS  Memory Limit:32768K

    Description:

    有一些01字串,将其按1的个数的多少的顺序进行输出。

    Sample Input:

    10011111
    00001101
    1010101
    1
    0
    1100
    

    Sample Output:

    0
    1
    1100
    00001101
    1010101
    10011111




    #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
    ",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]!='')
     { 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
    ",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]!='')
     { 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
    ",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;
    }
  • 相关阅读:
    迎战智能手机时代,芯片厂商谁能笑到最后?
    古老Ubuntu 安装 EDB 的奇葩旅程
    今天做了一个很糟糕的storage and buffer manager
    android 数据库SQL 框架例子
    关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义"
    ListActivity源码分析
    最优非对称加密填充(OAEP)
    EVP_DigestInit(3)源码解析
    Java EE学习笔记(1:Servlet & JSP)
    Servlet
  • 原文地址:https://www.cnblogs.com/2014acm/p/3876443.html
Copyright © 2011-2022 走看看