UVa 112
今天高等(一ㄢˇ)程式(ㄙㄨㄢˋ)設計(ㄈㄚˇ)的助教請我幫忙監考。
上機考,考了一題 UVa。看了網路上的版本,都在 cin, getchar。
其實有種東西叫做 scanf 很好用的。
這題唯一要注意的是 leaf 的定義,要左右支為 nil 才是 leaf,而不是 nil 是 leaf。
還有 不要寫成 res |= go_tree(...) || go_tree(...) || ...
會因為 or 短路特性,可能會少做到後面的 go_tree,會爆。
上機考,考了一題 UVa。看了網路上的版本,都在 cin, getchar。
其實有種東西叫做 scanf 很好用的。
這題唯一要注意的是 leaf 的定義,要左右支為 nil 才是 leaf,而不是 nil 是 leaf。
還有 不要寫成 res |= go_tree(...) || go_tree(...) || ...
會因為 or 短路特性,可能會少做到後面的 go_tree,會爆。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<cstdio> | |
#define LL long long | |
bool go_tree(LL tar, LL cur, bool &isNIL){ | |
LL val; | |
bool res = false, ll = false, rl = false; | |
if(scanf("\n(%lld", &val)){ | |
res |= go_tree(tar, cur + val, ll); | |
res |= go_tree(tar, cur + val, rl); | |
res |= (ll && rl && tar == cur + val); | |
} | |
else isNIL = true; | |
scanf("\n)"); | |
return res; | |
} | |
int main(){ | |
bool _; | |
LL target; | |
while(~scanf("%lld", &target)) | |
puts(go_tree(target, 0, _) ? "yes" : "no"); | |
return 0; | |
} |
留言
張貼留言