不是VIP会员,不能显示答案

题目解答

题目:
(FBZ串问题)

已知一个由0,1字符组成的长度为2^n的字符串。请按以下规则分解为FBZ串:

·若其中字符全为1,则称其为B串:

·若其中字符全为0,则称其为Z串;

·若不全为0,也不全为1,则称F串。

若此串为F串,则应将此串分解为2个长为2^(i-1)的子串。对分解后的子串,仍按以上规则继续分解直到全部为B串或为Z串为止。例如n=3时,给出0-1串为“10111001”



最后输出:FFFBZBFFBZFZB。给定一个0-1串,分解成FBZ串。



#include <iostream>

#include <cstdio>

#include <cstring>

using namespace std;

const int n= 8;

char str1[2*n][n];

char str2[40]=" ";

int main() {

int s1,s2,x,s,t;

s1=s2=x= 0;

gets(str1[0]);

while(___(1)___) {

s=t=0;

for (int i = 0; i< n; i++) {

if (str1[s2][i]=='1')

s++;

if (str1[s2][i]=='0')

t++;

}

if(___(2)___)

str2[x++]='B';

else if(___(3)___)

str2[x++]='Z';

else {

str2[x++]='F';

int j=(s+t)>>1;

for (int k=n*2-2; k>=___(4)___; k--)

for (int i=0; i<n; i++)

str1[k+2][i]=str1[k][i];

s1 += 2;

for (int i=0; i<j; i++) {

str1[s2+1][i]=str1[s2][i];

str1[s2+2][i]=___(5)___;

}

for (int i=___(6)___; ___(7)___; i++) {

str1[s2+1][i]=' ';

str1[s2+2][i]=' ';

}

}

s2++;

}

puts(str2);

return 0;

}




选择题

1) ⑴处应填( )

2) ⑵处应填( )

3) ⑶处应填( )

4) ⑷处应填( )

5) ⑸处应填( )

6) ⑹处应填( )

7) ⑺处应填( )
考点:
分析:
解答:
评论:
老师: