zoukankan      html  css  js  c++  java
  • 【树论】FBI树

    原题传送门

    思路


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

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

    Code


    #include <iostream>
    #include <string>
    
    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<s.length();i++)
        {
            if(s[i]=='1')
                is_1=true;
            if(s[i]=='0')
                is_0=true;
        }
        if(is_1==true&&is_0==true)
            return 'F';
        if(is_1==false&&is_0==true)
            return 'B';
        if(is_1==true&&is_0==false)
            return 'I';
    }
    
  • 相关阅读:
    9
    8
    7
    6
    5
    第四周
    作业14-数据库
    作业13-网络
    作业12-流与文件
    作业11-多线程
  • 原文地址:https://www.cnblogs.com/gongdakai/p/11230464.html
Copyright © 2011-2022 走看看