• 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;
    }

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

  • 相关阅读:
    python 得到列表的第二大的元素
    PHP 打印输出数组内容及结构 print_r 与 var_dump 函数
    php 数组元素加法
    PHP unlink() 函数
    PHP 文件创建/写入
    PHP chmod() 函数
    php 压缩文件
    php 每隔30s在页面显示字符串
    PHP basename() 函数
    PHP rtrim() 函数
  • 原文地址:https://www.cnblogs.com/bei-insomia/p/4472814.html
Copyright © 2020-2023  润新知