非常好的dfs题 有很多细节
关于‘ ’ ‘0’ ’\n‘ 的处理 他们都属于isspace函数
其中
while(buf[x+2][i]=='-'&&buf[x+3][i]!='\0') 很重要 &&后面去掉的话会自动以\0为目标进行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]!='\0')//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(")\n"); } return 0; }
本文深入探讨了深度优先搜索(DFS)算法的细节,包括如何处理特殊字符如'0'和'
',以及使用isspace函数判断空格。文章通过具体代码示例,讲解了如何正确使用while循环和条件判断避免获取多行结果,以及如何利用fgets函数读取行数据。
1136

被折叠的 条评论
为什么被折叠?



