蓝桥杯——算法训练——s01串
——————————————————————————————————————
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
s
01
s01
s01 串初始为
"
0
"
"0"
"0"
按以下方式变换:
0
0
0 变
1
1
1,
1
1
1 变
01
01
01
输入格式
1
1
1 个整数
(
0
∼
19
)
(0\sim19)
(0∼19)
输出格式
n
n
n 次变换后
s
01
s01
s01 串
样例输入
3
3
3
样例输出
101
101
101
——————————————————————————————————————
思路分析:这道题本质上是考察字符串的更新问题,难点主要在于
1
1
1 变
01
01
01 时,我们需要解决字符串长度变化带来的问题。由于
0
⩽
n
⩽
19
0\leqslant n\leqslant 19
0⩽n⩽19,显然数据规模并不大,那么我们认为可以直接开一个
s
t
r
i
n
g
string
string 数组,然后用数组前一项结合变换规则生成后一项,考虑到
s
t
r
i
n
g
string
string 字符串 “+=” 的特性,上述思路的可行性非常好,下面看代码:
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main(){
int n;
while(cin>>n){
string a[25];
a[0] = "0";
for(int i=1; i<=n; i++){
int l = a[i-1].length();
for(int j=0; j<l; j++){ // 一边遍历已有s01串,一边按规则生成新的s01串
if(a[i-1][j] == '0') a[i] += "1";
else a[i] += "01";
}
}
cout<<a[n]<<endl;
}
return 0;
}