分析
题意实际上是在递归树,建树的方法实际上就是树的先序遍历,当目前节点长度大于1时递归建立子树。
AC代码
#include <iostream>
#include <string>
using namespace std;
void FBI_tree(string s)
{
int len = s.length();
if (len >= 2)
{
FBI_tree(s.substr(0, len / 2));
FBI_tree(s.substr(len / 2, len));
}
if (s == string(len, '0'))
{
cout << "B";
}
else if (s == string(len, '1'))
{
cout << "I";
}
else
{
cout << "F";
}
}
int main()
{
int n;
cin >> n;
string s;
cin >> s;
FBI_tree(s);
return 0;
}