zoukankan      html  css  js  c++  java
  • AcWing 157 树形地铁系统(树的最小表示)

    题目链接

    解题思路

      求出两个字符串代表的树的最小表示,进行比对就能得到答案,为了方便处理,给他设定一个根,即在开头加一个0,当然在结尾也要再加上一个1。
      关于最小表示的求法,每次都求出子树字典序最小的组合方式,然后向上合并为字典序最小的组合方式即可,显然可以用递归来完成。

    代码

    const int maxn = 1e5+10;
    int u,p[maxn];
    string dfs(string s) {
        ++u;
        vector<string> tmp;
        while(s[u]=='0') tmp.push_back(dfs(s));
        ++u;
        sort(tmp.begin(),tmp.end());
        string res = "0";
        for (auto s : tmp) res += s;
        res += '1';
        return res;
    }
    int main(){
        int t; cin >> t;
        while(t--) {
            string s1,s2;
            cin >> s1 >> s2;
            s1 = '0'+s1+'1';
            s2 = '0'+s2+'1';
            u = 0; string rs1 = dfs(s1);
            u = 0; string rs2 = dfs(s2);
            if (rs1==rs2) puts("same");
            else puts("different");
        }
        return 0;
    }
    
  • 相关阅读:
    ROS配置C++14环境
    ubantu查看环境变量
    C++指向函数的指针
    ubantu删除文件(夹)
    ROS环境搭建
    vmware workstation pro 安装ubantu虚拟机
    Win7下删除Ubuntu启动项
    ubantu16.04
    ubantu卸载软件
    github之克隆
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/13378529.html
Copyright © 2011-2022 走看看