洛谷1087題解

2021-09-24 02:39:03 字數 1173 閱讀 1928

problem description

我們可以把由「0」和「1」組成的字串分為三類:全「0」串稱為b串,全「1」串稱為i串,即含有「0」又含有「1」的串則稱為f串。

fbi樹是一種二叉樹,它的結點型別也包括f結點、b結點和i結點三種。由乙個長度為2^n的「01」串s可以構造出一棵fbi樹t,遞迴的構造方法如下:

t的根結點為r,其型別與串s的型別相同;

若串s的長度大於1,將串s從中間分開,分成等長的左右子串s1和s2;由左子串s1構造r的左子樹t1,由右子串s1構造r的右子樹t2。

現在給定乙個長度為2^n的「01」串,請用上述構造方法構造出一棵fbi樹,並輸出它的後序遍歷序列。

input

輸入有多組資料,每組資料的第一行是乙個整數n(0<=n<=10),第二行是乙個長度為2^n的「01」串。

output

對於每組資料輸出僅一行為fbi樹的後序遍歷序列。

sample input

310001011

sample output

ibfbbbfibfiiiff

題目分析:

1. 理解題意,對fbi樹進行判定。只要全是1->i串,只要全是0->b串,0和1都有就是f串;

2. 需要建樹。二分的方法進行建樹。

3. 理解fbitree(x,(x+y)/2)和fbitree((x+y+1)/2,y);類似於歸併排序的建樹方法;

4.  這種方法是對每乙個元素進行分析建立

#include using namespace std;

char s[1005];

void fbitree(int x,int y)

int b = 1,i = 1;

for(int i = 0 ;i <= y - x;i++)

else if(s[x+i]=='0')

} if(b)

else if(i)

else

}int main()

{ int n;

cin >> n >> s;

fbitree(0,(1《以上**採用一定的優化。先把b和i的值全部賦值為1,要是其中乙個為1則不可能是b,要是其中乙個為0則不可能是i。

洛谷 比賽題解

這套題的題目質量很高,寫一發題解。t1 cjwssb最近在物理學科上遇到了難題,他不會計算乙個電路中的總電阻,現在他找到了你,希望你能幫助他。這個電路有如下限定 1 電路只由導線以及電阻為一歐的電阻組成 2 保證電路從左到右連線,即每個電阻或導線的兩個連線點xy保證x 我們可以用dfs求解,這個電路...

洛谷 1196 題解

有30000 30000 3000 0個佇列,初始每個佇列裡有元素1,2 3 30000 1,2,3 cdots 30000 1,2,3 3000 0。兩種指令 1.m mmi iij jj 編號為i ii的佇列整個接到jjj上 2.c cci iij jj 問編號為i ii,j jj的兩個點之間 ...

洛谷 桌球 題解

國際乒聯現在主席沙拉拉自從上任以來就立志於推行一系列改革,以推動桌球運動在全球的普及。其中11分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了桌球研究工作,意圖弄明白11分制和21分制對選手的不同影響。在開展他的研究之前,他首先需要對他多年比賽...