算法基础-01序列【简单模拟】

题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
对于长度为6位的一个01串,每一位都可能是01,一共有64种可能。它的前几个是:
000000
000001
000010
000011
000100
请按从小到大的顺序输出这6401串。
输入输出格式
输入描述:
输出描述:
输出64行,每行一个01串。

方法一:暴力枚举。。。(这个就不用多说了吧)

方法二:六层循环
#include
int main()
{
    for(int a=0;a<2;a++)
        for(int b=0;b<2;b++)
            for(int c=0;c<2;c++)
                for(int d=0;d<2;d++)
                    for(int e=0;e<2;e++)
                        for(int f=0;f<2;f++)
                        printf("%d%d%d%d%d%d\n",a,b,c,d,e,f);
    return 0;
}

方法三:将这些数看做是(十进制对二进制)的转换而来的

首先,你得了解十进制对二进制的转换过程,代码如下:
#include
int main()
{
    int f[10];
    int x,rem,i=0;
    scanf("%d",&x);
    while(x)
    {
        rem=x%2;
        x/=2;
        f[i++]=rem;
    }
    while(i>0)
    {
        printf("%d",f[--i]);
    }
    return 0;
}

--------我是分割线----------

有了转换的基础,题目就很容易了:
#include
int func(int x)
{
    int i,f[6];
    for(i=0;i<6;i++)
    {
        f[i]=x%2;
        x/=2;
    }
    for(i=5;i>=0;i--)
    {
        printf("%d",f[i]);
    }
}
int main()
{
    int i;
    for(int i=0;i<64;i++)
    {
        func(i);
        printf("\n");
    }
    return 0;
}

好了,看到这里基本上这章就结束啦。如果您觉得这期内容对你有帮助的话,欢迎点赞,评论,收藏,谢谢啦。

你可能感兴趣的:(算法题解,算法,数据结构,c++,c语言)