zoukankan      html  css  js  c++  java
  • CodeForces #300 B Quasi Binary

    大致题意:给定一个整数,比如32,32=11+11+10。。。给定一个整数n,它可以由0 和1 组成的整数的和组成,求最少需要几个这样0 和 1的整数。比如32至少需要3个。

    分析:把输入的这个整数当成字符串处理。比如s=“32”  s[0]=' 3 ' ,s[1]=' 2 ';

    那么,我们做一个二维数组。a[][];  用来存储这个字符串s  

    例如“ 32 ” 存储为 

    1 1

    1 1

    1 0 

    例如3451 存储为:

    1 1 1 1

    1 1 1 0

    1 1 1 0

    0 1 1 0

    0 0 1 0

    我们只需要把这个二维数组按行输出并忽略前导0 即可。

    代码如下:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #define max(a,b) a>b?a:b
    using namespace std;
    
    int a[10][10];
    int main()
    {
        string s;
        cin>>s;
        int len=s.size();
        int i,j,k,cou=0;
        for(i=0;i<len;i++)
        {
            cou=max(cou,s[i]-'0');
            for(j=0;j<s[i]-'0';j++)
                a[j][i]=1;
        }//把输入的n按位存储入二维数组a[][];
        //for(i=0;i<cou;i++)
        //{
        //    for(j=0;j<len;j++)
        //        printf("%d ",a[i][j]);
         //   printf("
    ");
       // }
        printf("%d
    ",cou);
        for(i=0;i<cou;i++)
        {
            int flag=0;
            for(j=0;j<len-1;j++)
                if(a[i][j]==1||flag==1)//忽略前导0 把数组a内的元素按行输出。
                {
                    flag=1;
                    printf("%d",a[i][j]);
                }
                printf("%d",a[i][j]);
            printf(" ");
        }
        return 0;
    }

    很多优秀的处理办法不一定拘束于数字,也可以把数字当做字符串来处理,降低思考难度。

  • 相关阅读:
    02.替换空格 (Java)
    01.二维数组中的查找 (Java)
    css
    CSS Selectors
    Golang Singleton
    TL;DR
    go get
    golang string、int、int64 float 互相转换
    Thrift支持的基本数据类型
    双亲委派模型
  • 原文地址:https://www.cnblogs.com/bei-insomia/p/4472814.html
Copyright © 2011-2022 走看看