Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-完善程序 第 20 题
(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” [image257] 最后输出: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 题 ⑺处应填( )

解答部分以后会开放。