【树论】FBI树

原题传送门

思路


讲这道题之前,先讲一个黑科技一般的函数:basic_string::substr(int x,int y)
这是一个string类的成员函数,它返回一个新的string对象,该对象是从调用者的第x个字符开始往后数y个字符所组成的字符串(若x+y>this->length(),则默认截取到最后一位),这个函数可以完美的解决本题中分割字符串的问题~~~

运用递归,若参数字符串长度大于一,则对其前一半和后一半进行递归,然后分析原字符串的类别,返回F/B/I,若等于一,则分析该字符串的类别,放回F/B/I。

Code


#include 
#include 

using namespace std;

char FBI(string s);

int main() 
{
    int n;
    cin >> n;
    string s;
    cin >> s;
    cout << FBI(s);
    return 0;
}

char FBI(string s) 
{
    if (s.length() > 1)
    {
        cout << FBI(s.substr(0, s.length()/2));
        cout << FBI(s.substr(s.length()/2, s.length()/2));
    }
    bool is_1=false,is_0=false;
    for(int i=0;i

你可能感兴趣的:(【树论】FBI树)