问题 4365 --FBZ问题(完善程序)

4365: FBZ问题(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 69  解决: 56
[提交][状态][命题人:]

题目描述

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

(1)若其中字符全为'1',则称之为"B"串;

(2)若其中字符全为'0',则称之为"Z"串;

(3)若不全为‘0’,同时也不全为'1',则称“F”串;若此串为F串,则应将此串分解为2个长度为2^(n-1)的子串。

对分解后的子串,仍按以上规则继续分解,直到全部为B串或为Z串为止。

例如n=3时,给出0-1串为: 10111001,由下图可知,最后的输出应该是FFFBZBFFBZFZB



#include<bits/stdc++.h>
using namespace std;
const int n=8;
int i,j,st11=1,st12=1,st2,s,t;
char str1[n*2+1][n+1],str2[44];
int main()
{
    for(i=1;i<=n*2;i++)
        for(j=1;j<=n;j++) str1[i][j]=' ';
    for(i=1;i<=n;i++) str1[1][i]=getchar();
    while(_____(1)______)
    {
        s=t=0;
        for(i=1;i<=n;i++)
        {
            if(str1[st12][i]=='1') s++;
            if(str1[st12][i]=='0') t++;
        }
        if(____(2)_____) st2++,str2[st2]='B';
        else if(_____(3)______) st2++,str2[st2]='Z';
        else
        {
            st2++,str2[st2]='F',j=(s+t)/2;
            for(s=n*2-2;s>=_____(4)______;s--)
                for(t=1;t<=n;t++) str1[s+2][t]=str1[s][t];
            st11+=2;
            for(i=1;i<=j;i++)
            {
                str1[st12+1][i]=str1[st12][i];
		str1[st12+2][i]=_____(5)_____;
	    }
            for(i=_____(6)_____;i<=n;i++)
                str1[st12+1][i]=' ',str1[st12+2][i]=' ';
        }
        st12++;
    }
    for(i=1;i<=st2;i++) printf("%c",str2[i]);
    return 0;
}

输入

输出

只需输出每个空的选项答案,大写字母,每个答案一行,一共六行

(1)第1空的答案是:_______

   A.  st11<=st12        B. st12<=st11

   C.  st2<=n                  D. s<=t

(2)第2空的答案是:_______

   A. t==0                   B. s==0

   C. t>0                     D. s>0

(3)第3空的答案是:_______

   A. t==0                B. s==0

   C. t>0                  D. s>0

(4)第4空的答案是:_______

   A. st12                      B. st12+1

   C. st11;                     D. st11+1

(5)第5空的答案是:_______

   A. str1[st12][j]                      B. str1[st12+1][i]

   C. str1[st12][i+j]                  D. str1[st12+1][i+j]

(6)第6空的答案是:_______

   A. 1                      B. j+1

   C. st11                 D. st12

样例输入
Copy
10111001
样例输出
Copy
FFFBZBFFBZFZB

提示

来源

 

[提交][状态]