蓝桥杯 基础练习 01字串

本文介绍了两种生成固定长度二进制序列的方法。一种是直接枚举所有可能的序列,另一种则是利用二进制加法规则,通过编程实现自动递增生成序列。后者更通用且易于扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一看到这个题目不知道怎么做,就是二进制的算法,但不知道怎么表达,在网上找到了以下解法

题目:

问题描述

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

00000

00001

00010

00011

00100

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

输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

解法:

1.暴力破解

#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;  
    } 
可以做出来,但是适用情况少

2.

#include <iostream>  
#include <string.h>  
using namespace std;  
int two[6];  
      
int main()  {  
    memset(two,0,sizeof(two));  
    cout<<"00000"<<endl;  
    for(int i=1;i<=31;i++){  
        two[5]++;  
        if(two[5]==2){  
            two[4]++;  
            two[5]=0;  
        }  
        if(two[4]==2){  
            two[3]++;  
            two[4]=0;  
        }  
        if(two[3]==2){  
            two[2]++;  
            two[3]=0;  
        }  
        if(two[2]==2){  
            two[1]++;  
            two[2]=0;  
        }  
        for(int m=1;m<=5;m++)  
            cout<<two[m];  
        cout<<endl;  
    }  
    return 0;  

这个方法思路很清晰,就是应用了二进制加法,满二进一。是个好方法。希望自己也能灵活掌握吧。

"Auto F5 reload window" 设置 
默认的超时时间*
此网页超时时间*
添加超时随机值,介于0和*
唤醒菜单快捷键
忽略网址这些符号之后的一切(用空格分隔)  
包括保存URL中的分隔符
单击菜单外时隐藏菜单
当本页有鼠标和键盘活动时超时刷新
重新装入默认的超时时间,它没有超时设置所有页面

*超时时间格式表达,例如 时时:分分:秒, 时:分:秒, 分:秒, 秒 等。就像 1:20:30 或者 500 或者3:100


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值