题解 | #[NOIP2001]求先序排列#

[NOIP2001]求先序排列

https://ac.nowcoder.com/acm/problem/16692

using namespace std;
string a,b;
void tree(int l1 , int r1 , int l2 ,int r2){
    if(l1 > r1 || l2 > r2) {
        return ;这种情况是针对于该序列不存在左子树或者右子树的情况,很重要(不过也可以放在下面判断:也就是在两个递归前面都各自加一个判断条件if (l1 <= r1))
    }//
    else if (l1 == r1 || l2 == r2){
        cout << a[l1];
        return ;
    }
    else{
        int pos;
        for (int i = l1 ; i <= r1 ; i ++ ){
            if (a[i] == b[r2]){
                pos = i;
                break;
            }
        }
        cout << a[pos];
        tree(l1 , pos - 1 ,l2 , pos + l2 - l1 - 1);
        tree(pos + 1 ,r1 , l2 + pos - l1 ,r2 - 1);
    }
}
int main(){
    cin >> a >> b;
    int len = a.length();
    tree(0 , len -1 , 0 , len -1 );
    return 0;
}
全部评论

相关推荐

宇算唯航:目测实缴资本不超100W的小公司
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
点赞 评论 收藏
分享
码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务