1217: 01字串 [水题]

时间限制: 1 Sec 内存限制: 128 MB

提交: 116 解决: 93 统计

题目描述

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入

本试题没有输入。 

输出

输出32行,按从小到大的顺序每行一个长度为5的01串。

来源

 

自己想的是暴力的解法,看了别人的博客后发现原来是有规律可循的

暴力解法

1217: 01字串 [水题]_暴力解法1217: 01字串 [水题]_暴力解法_02
#include<stdio.h>

int main()
{
    printf("00000\n");
    printf("00001\n");
    printf("00010\n");
    printf("00011\n");
    printf("00100\n");
    printf("00101\n");
    printf("00110\n");
    printf("00111\n");
    printf("01000\n");
    printf("01001\n");
    printf("01010\n");
    printf("01011\n");
    printf("01100\n");
    printf("01101\n");
    printf("01110\n");
    printf("01111\n");
    printf("10000\n");
    printf("10001\n");
    printf("10010\n");
    printf("10011\n");
    printf("10100\n");
    printf("10101\n");
    printf("10110\n");
    printf("10111\n");
    printf("11000\n");
    printf("11001\n");
    printf("11010\n");
    printf("11011\n");
    printf("11100\n");
    printf("11101\n");
    printf("11110\n");
    printf("11111\n");
    
    return 0;
}
View Code

规律解法

1217: 01字串 [水题]_暴力解法1217: 01字串 [水题]_暴力解法_02
#include <iostream>
using namespace std;
int main()
{
    for(int i=0;i<32;i++){
        cout<<i%32/16<<i%16/8<<i%8/4<<i%4/2<<i%2<<endl;
    }
    return 0;
}
View Code

 

永远渴望,大智若愚(stay hungry, stay foolish)