zoukankan      html  css  js  c++  java
  • poj1635

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

    思路:本题为最小树表示法。。类似dp的思想实现。。

         当1和0的个数相等时,这个序列便是一颗子树。。

           每次搜到一个子树,我们便对子树进行大小排序。。

          每层都这样操作。。

          那么最后的序列便是树的最小表示法。。因为其是唯一的。。

          两串如果相等便是同一颗数。。

     1 /*
     2   Time:2013.03.06 00:19:55
     3   State:Accepted
     4 */
     5 #include <iostream>
     6 #include <cstring>
     7 #include <string>
     8 #include <algorithm>
     9 #include <vector>
    10 #include <algorithm>
    11 #include <cmath>
    12 #include <cstdlib>
    13 #include <cstdio>
    14 using namespace std;
    15 string str1 , str2;
    16 int test;
    17 
    18 string mintree(string str){
    19      int deepth= 0 , st = 0;
    20      vector <string> a;
    21      string stemp;
    22      for (int i = 0; i < str.size(); ++i) {
    23           deepth += str[i] == '1'? -1 : 1;
    24           if (!deepth){
    25               stemp = string("0") + mintree(str.substr(st + 1, i - st)) +string("1");
    26               a.push_back(stemp);
    27               st = i + 1;
    28           }
    29      }
    30      sort(a.begin(), a.end());
    31      stemp = string("");
    32      for (int i = 0; i < a.size(); ++i)
    33         stemp += a[i];
    34      return stemp;
    35      
    36         
    37 }
    38 
    39 void solve(){
    40      cin >> str1 >> str2;
    41      string s1 = mintree(str1);
    42      string s2 = mintree(str2);
    43      if (s1 == s2) printf("same\n");
    44      else printf("different\n");
    45 }
    46 
    47 int main(){
    48      freopen("poj1635.in","r",stdin);
    49      freopen("poj1635.out","w",stdout);
    50      scanf("%d",&test);
    51      for (int i = 1; i <= test; ++i){
    52           solve();
    53      }
    54      fclose(stdin);
    55      fclose(stdout);
    56 }

      

        

  • 相关阅读:
    四则运算2实验及表格
    四则运算2初步构思
    2015.3.6的程序实践
    对《梦断代码》的阅读计划
    林锐——软件思想阅读笔记2
    二维数组最大子数组溢出问题
    循环数组求最大子数组
    电梯调度需求分析调研报告
    二维数组求最大子数组
    四则运算实现用户输入答案并统计正确数量
  • 原文地址:https://www.cnblogs.com/yzcstc/p/2977707.html
Copyright © 2011-2022 走看看