看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《AE5096 (XD)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 題號:112 : 遇到的問題: : 我自己不管是用VC2008 或是linux 怎麼跑都覺得是對的 : 但是上傳都是WA ◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣ : 已經爬過文了 但我還是不知道我錯在哪裡 : 所以想問問其他高手們 : 我所用的方法 大概就是一直去讀input : 一邊讀tree 一邊判斷現在走到哪裡 目前的總和是多少 : 如果讀到leaf 就判斷現在的總和和key是否相同 : 有問題的code: (請善用置底文的標色功能) : #include<stdio.h> : char judge(char s){ : if(s=='(' || s==')' || s=='-') return 1; : if(s>='0' && s<='9') return 1; : return 0; : } : int main(){ : int key,sum,depth,node,tree[100000],IsLeaf; : char s; : bool YN; : while(scanf("%d",&key)>0){ : sum=0; : depth=0; : YN=false; /*不加底下紅色這行的話,下面的測資會錯唷 ^.< 1 ( 1 () () ) 1 () 0 () */ IsLeaf=0; : while(1){ : s=getchar(); : if(judge(s)==0) { : continue; : } : if(s=='('){ : depth++; : if(scanf("%d",&node)>0){ : sum+=node; : tree[depth]=node; : IsLeaf=0; //IsLeaf: empty child count : }else{ : while(getchar()!=')'); : depth--; : IsLeaf++; : if(IsLeaf==2){ : // printf("%d,",sum); : if(sum==key)YN=true; : } : } : }else if(s==')'){ : sum-=tree[depth]; : depth--; : IsLeaf=0; : } : if(depth==0) break; : } : if(YN)printf("yes\n"); : else printf("no\n"); : } : return 0; : } : 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.4.114
AE5096:謝謝cutecpu大大 受小弟一拜 <(_ _)> 07/03 11:06