6-17 看图写树 uva10562

Posted bxd123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 




以上是关于6-17 看图写树 uva10562的主要内容,如果未能解决你的问题,请参考以下文章

UVa 10562 Undraw the Trees 看图写树

Undraw the Trees UVA - 10562

UVA10562-Undraw the Trees(递归)

Uva10562

Undraw the Trees (Uva 10562)

吃西瓜用英语怎么写Eat the一后面怎么填