24h購物| | PChome| 登入
2011-06-14 22:09:55| 人氣538| 回應0 | 上一篇 | 下一篇

d861. NOIP2001 3.求先序排列

推薦 0 收藏 0 轉貼0 訂閱站台

http://zerojudge.tw/ShowProblem?problemid=d861

內容 :

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

輸入說明 :

第一行为一棵二叉树的中序排列;
第一行为一棵二叉树的后序排列。

輸出說明 :

输出这棵二叉树的前序排列。

範例輸入 :

BADC
BDCA

範例輸出 :

ABCD

提示 :

出處 :

NOIP2001普及组第三题 (管理:liouzhou_101)




/**********************************************************************************/
/*  Problem: d861 "NOIP2001 3.求先序排列" from NOIP2001普及组第三题    */
/*  Language: C                                                                   */
/*  Result: AC (2ms, 223KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-06-12 12:39:26                                     */
/**********************************************************************************/


#include<stdio.h>
#include<string.h>
int pos_tail, top;
char pos[100], in[100], pre[100];
void print(int from, int end) {
    int i;
    if(from > end) return;
    else {
        pos_tail--;
        for(i = 0; in[i] != '\0'; i++)
            if(pos[pos_tail] == in[i]) {                     
                print(i+1, end);
                print(from, i-1);
                pre[top++] = in[i];
                break;
            }
    }
}
main() {
    while(scanf("%s %s",in, pos) == 2) {
        pos_tail = strlen(in), top = 0;
        print(0, strlen(in)-1);
        int i;
        for(i = top-1; i >= 0; i--)
            printf("%c",pre[i]);
        puts("");
    }
   return 0;
}

台長: Morris
人氣(538) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 資訊競賽 |
此分類下一篇:d860. NOIP2001 2.最大公约数和最小公倍数问题
此分類上一篇:d868. NOIP2000 1.计算器的改良

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文