zoukankan      html  css  js  c++  java
  • USACO American Heritage

      给你一颗数的中序和先序遍历求出后序遍历, 直接递归求解, 代码如下:

      

    /*
        ID: m1500293
        LANG: C++
        PROG: heritage
    */
    
    
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    char mid[50], pre[50];
    
    void dfs(int p1, int p2, int m1, int m2)
    {
        if(p1 > p2) return ;
        char root = pre[p1];
        int m_idx;
        for(m_idx=m1; m_idx<=m2; m_idx++) if(mid[m_idx]==root) break;
        int len = m_idx-m1;
        dfs(p1+1, p1+1+len-1, m1, m_idx-1);
        dfs(p1+1+len, p2, m_idx+1, m2);
        printf("%c", root);
    }
    
    int main()
    {
        freopen("heritage.in", "r", stdin);
        freopen("heritage.out", "w", stdout);
        scanf("%s%s", mid, pre);
        int lenmid = strlen(mid);
        int lenpre = strlen(pre);
        dfs(0, lenpre-1, 0, lenmid-1);
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    Python基础知识篇
    Django框架
    Django REST Framework框架
    NoSQL
    MySQL恩恩怨怨
    Python奇技淫巧
    一文搞定Flask
    数据结构与算法(Python)
    学习数据分析
    项目杂项
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5096968.html
Copyright © 2011-2022 走看看