蓝桥杯-01子串

有两种解决的方法

第一种 暴力计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
using namespace std;
int main()
{
// 暴力问题QAQ
for(int i1=0;i1<2;i1++)
{
for(int i2 = 0; i2 < 2; i2++)
{
for(int i3 = 0; i3 < 2; i3++)
{
for(int i4 = 0; i4 < 2; i4++)
{
for(int i5=0;i5< 2;i5++)
{
cout<<i1<<i2<<i3<<i4<<i5<<endl;
}
}

}
}
}
return 0;
}

第二种 满二进一

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<iostream>
using namespace std;
int main()
{
//这种方法内存占用也不是很低,在官网上并没有什么变化。
// 这一中算法是不是暴力的题目,采用的是数组的算法,更精确的说法是二进制满二进一的思想
// 首先定义数组,之所以定义数组,就是为了计算的时候方便,加减在基础上是对最后一位有影响。然后影响其他的位置。
char a[6]={'0','0','0','0','0','\0'};//这里注意 一定是char类型的数据而不是int 类型的数据 int的数组只能用来存取数
// 然后实行满二进一的计算
// 外层输出
for(int i = 0; i < 32; i++)
{
// 首先输出结果
cout<<a<<endl;
a[4]++;//末位加一
// 开始进行二进制的计算
for(int j = 4; j >=0; j--)
{
if (a[j]=='2') {
a[j-1]++;//开始进行进位的运算
a[j]='0';
}
}

}
return 0;


}