题意
传送门 NC 16660
题解
按照后序遍历,将字符串拆半,递归解决即可。
#include <bits/stdc++.h>
using namespace std;
#define maxn 1050
string calc(string s)
{
int n0 = 0, n1 = 0, n = s.length();
for (char c : s)
{
n0 += (c == '0' ? 1 : 0);
n1 += (c == '1' ? 1 : 0);
}
return n0 == n ? "B" : (n1 == n ? "I" : "F");
}
string dfs(string s)
{
int n = s.length();
if (n == 1) return calc(s);
return dfs(s.substr(0, n / 2)) + dfs(s.substr(n / 2, n / 2)) + calc(s);
}
int main()
{
int n;
string s;
cin >> n >> s;
cout << dfs(s) << endl;
return 0;
}