zoukankan      html  css  js  c++  java
  • 6-17 看图写树 uva10562

    非常好的dfs题  有很多细节

    关于‘ ’  ‘0’  ’ ‘  的处理  他们都属于isspace函数

    其中

    while(buf[x+2][i]=='-'&&buf[x+3][i]!='')  很重要    &&后面去掉的话会自动以为目标进行dfs  得到答案不止一行!!!

    判断不是空格用!isspace()

    fgets用于读取行 在string不合适的时候  并且同样会读取换行符

    if(n){ for(int i=0;i<strlen(buf[0]);i++)
    {
    if(buf[0][i]!=' '){dfs(0,i);break;}
    }

    }    //如果去掉if(n)    会错    debug了好久!!!

    #include<bits/stdc++.h>
    using namespace std;
    
    char buf[1000][1000];
    
    int n;
    
    void dfs(int x,int y)
    {
        printf("%c(",buf[x][y]);
        if(buf[x+1][y]=='|')
        {
            int i=y;
            while((i-1)>=0&&buf[x+2][i-1]=='-')i--;
    
            while(buf[x+2][i]=='-'&&buf[x+3][i]!='')//11111
            {
                if(!isspace(buf[x+3][i]))dfs(x+3,i);
                i++;
            }
    
    
        }
        printf(")");
    
    }
    
    
    int main()
    {
      
         int cas;cin>>cas;getchar();
        while(cas--)
        {
             memset(buf,' ',sizeof(buf));
        
            int i=0; n=0;
    
            for(;;){
                fgets(buf[n],210,stdin);
                if(buf[n][0]=='#')break;else n++;
            }
    
      
    
            printf("(");
    
       if(n){     for(int i=0;i<strlen(buf[0]);i++)
            {
                if(buf[0][i]!=' '){dfs(0,i);break;}
            }
    
       }
    
            printf(")
    ");
       }
        return 0;
    }
    View Code
  • 相关阅读:
    bzoj1027
    bzoj1069
    poj2079
    poj2187
    bzoj2281
    bzoj2285
    bzoj1558
    bzoj1822
    bzoj1559
    bzoj1570
  • 原文地址:https://www.cnblogs.com/bxd123/p/10312098.html
Copyright © 2011-2022 走看看