题目链接: UVA
题目描述: 递归方式输入叶子节点权值, 输出每一列的叶子节点的权值之和
解题思路: 还是递归输入和上题差不多。
代码:
#include <iostream> #include <queue> #include <string> #include <vector> #include <map> #include <algorithm> #include <list> #include <iterator> #include <cmath> #include <cstring> #include <forward_list> #include <sstream> using namespace std; const int maxn = 1e3+10; int sum[maxn]; void build(int p) { int v; cin >> v; if(v == -1) return; sum[p] += v; build(p-1); build(p+1); } bool init() { int v; if((cin >> v)==EOF) return false; int pos = maxn >> 1; sum[pos] = v; build(pos-1); build(pos+1); return true; } int main() { freopen("in.txt", "r", stdin); while(init()) { int p = 0; while(sum[p]==0) p++; while(sum[p]!=0) { cout << sum[p++] << " "; } cout << endl; } return 0; }
思考: 很烦, 这道题写很烦, 这样吧, 一会儿再写写面试题