1 条题解

  • 0
    @ 2025-10-8 16:51:16
    #include<bits/stdc++.h>
    using namespace std;
    char a[35],b[35];
    void dfs(int aL,int aR,int bL,int bR)
    {
        if(aL>aR) return ;
        int p;for(int i=aL;i<=aR;i++)if(a[i]==b[bR]){p=i;break;}
        int LL=(p-1)-aL+1;//左孩子树有多少个点
        printf("%c",b[bR]);
        dfs( aL    , (p-1)  ,   bL         , bL+LL-1   );
        dfs((p+1)  ,   aR   ,   bL+LL-1+1  , bR-1      );
        
    }
    int main()
    {
        scanf("%s%s",a+1,b+1);
        int len=strlen(a+1);
        dfs(1,len,1,len);
        return 0;
    }
    
    • 1

    *【递归】已知中序和后序求先序[NOIP普及组2001]求先序排列

    信息

    ID
    529
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    311
    已通过
    73
    上传者