高能预警:此文作者水平极差,漏洞百出,错误俯拾皆是,行文毫无逻辑!此文仅供作者自己研究所用。
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 10000;
int sum[maxn];
void build(int p) {
int v; cin >> v;
if(v == -1) return;//居然还有这种操作!直接return就是结束了这个函数。
sum[p] += v;
build(p - 1); build(p + 1);//dfs就是写出了在这儿怎么办,然后写出左右孩子的事儿(好像欧洲步)
}
bool init() {//输入函数(因为-1很恶心)
int v; cin >> v;
if(v == -1) return false;//while中一旦有false就结束了,开始下面的代码
memset(sum, 0, sizeof(sum));//每调用一次读入函数,就说明这是一种新的情况,要清空!易错!
int pos = maxn/2;//天啊,我都想到了,我为啥没有大胆把代码写下来!好可惜
sum[pos] = v;
build(pos - 1); build(pos + 1);//原来递归的起点可以不是递归函数!
}
int main() {
int kase = 0;
while(init()) {
int p = 0;
while(sum[p] == 0) p++;
cout << "Case " << ++kase << ":\n" << sum[p++];
while(sum[p] != 0) cout << " " << sum[p++];
cout << "\n\n";
}
return 0;
}