蓝桥杯-基础练习 01字符
发布日期:2021-05-14 16:34:39 浏览次数:19 分类:精选文章

本文共 943 字,大约阅读时间需要 3 分钟。

要列出所有长度为5位的01串并按从小到大的顺序排列,总共有32种情况。以下是两种实现方法:

方法一:暴力枚举(枚举法)

这种方法最直接,通过循环遍历每一位的可能性,按顺序生成所有组合。

#include 
int main() {
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
for(int k=0; k<2; k++) {
for(int a=0; a<2; a++) {
for(int b=0; b<2; b++) {
printf("%d%d%d%d%d\n",i,j,k,a,b);
}
}
}
}
}
return 0;
}

运行输出示例:

00000
00001
00010
00011
00100
00101
00110
00111
...
11111

方法二:转化为2进制

将整数转换为两位的二进制表示,然后生成5位二进制字符串。

#include 
int main() {
for(int i=0; i<32; i++) {
char binary[6]; //防止缓冲区溢出
int x=i;
int j=4;
while(x>0 && j>=0) {
binary[j] = (x&1) + '0';
x >>=1;
j--;
}
for(j=5; j>0; j--) {
binary[j] = '0';
}
printf("%s\n",binary+1);
}
return 0;
}

这个方法效率更高,但逻辑稍微复杂。

上一篇:蓝桥杯-基础练习 字符串对比
下一篇:PTA_L1-009 N个数求和 (20分)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月12日 15时22分14秒