6-17 看圖寫樹 uva10562
阿新 • • 發佈:2019-01-24
mem gif ssp ide display getchar() pen -- code
非常好的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]==‘View Code-‘&&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; }
6-17 看圖寫樹 uva10562