zoukankan      html  css  js  c++  java
  • poj 1635 Subway tree systems(树的最小表示)

    Subway tree systems

     POJ - 1635 

    题目大意:给出两串含有‘1’和‘0’的字符串,0表示向下搜索,1表示回溯,这样深搜一颗树,深搜完之后问这两棵树是不是同一棵树

    /*
        在poj上交需要加一个string头文件,不然会CE 
        树的最小表示
        这里用的最小表示法就是将树的所有子树分别用1个字符串表示,要按字典序排序将他们依依连接起来。连接后如果两个字符串是一模一样的,那么他们必然是同构的。这样原问题就变成了子问题,子树又是一颗新的树。 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<vector>
    #include<string>
    #include<algorithm>
    using namespace std;
    string s1,s2;
    string mn(string str){//得到树的最小表示 
        int dep=0,st=0;
        vector<string>a;
        string stemp;
        for(int i=0;i<str.size();i++){
            dep+=str[i]=='1'?-1:1;
            if(!dep){
                stemp="0"+mn(str.substr(st+1,i-st))+"1";
                a.push_back(stemp);
                st=i+1;
            }
        }
        sort(a.begin(),a.end());
        stemp=string("");
        for(int i=0;i<a.size();i++)stemp+=a[i];
        return stemp;
    }
    int main(){
        freopen("Cola.txt","r",stdin);
        int T;scanf("%d",&T);
        while(T--){
            cin>>s1>>s2;
            string ss1=mn(s1);
            string ss2=mn(s2);
            if(ss1==ss2)puts("same");
            else puts("different");
        }
    }
  • 相关阅读:
    plsql记住登录密码
    java之通过反射,来获得某对象的所有方法(类方法提取器)
    java之RTTI和反射的理解
    Thinking in java之正则表达式小例子
    java正则表达式之java小爬虫
    【ACM】Binary String Matching
    PHP var_export
    PHP FPM
    【ACM】阶乘之和
    【ACM】最少乘法次数
  • 原文地址:https://www.cnblogs.com/thmyl/p/8097539.html
Copyright © 2011-2022 走看看