onlien_judge_1368
2016-03-12 18:42
323 查看
#include <iostream> #include <vector> #include <cstdio> using namespace std; struct BiTNode { int data; int index; int leftnode,rightnode; }; void createTree(BiTNode *T, int n) { int i,t; for(i=1; i<=n; ++i) { scanf("%d%d%d",&T[i].data, &T[i].leftnode, &T[i].rightnode); if(T[i].leftnode > T[i].rightnode) { t = T[i].leftnode; T[i].leftnode = T[i].rightnode; T[i].rightnode = t; } T[i].index = i; } } void resultPrint(BiTNode *T, int ind, vector<int> &v, int cursum, int sum) { cursum += T[ind].data; v.push_back(T[ind].index); bool isLeaf = (T[ind].leftnode==-1) && (T[ind].rightnode==-1); if(cursum == sum && isLeaf) { printf("A path is found:"); vector<int>::iterator iter = v.begin(); for(; iter!=v.end(); ++iter) printf(" %d", *iter); printf("\n"); } if(T[ind].leftnode != -1) resultPrint(T, T[ind].leftnode, v, cursum, sum); if(T[ind].rightnode != -1) resultPrint(T, T[ind].rightnode, v, cursum, sum); v.pop_back(); } int main() { BiTNode T[10001]; int n,sum; vector<int> v; while(~scanf("%d%d",&n,&sum)) { createTree(T, n); printf("result:\n"); resultPrint(T, 1, v, 0, sum); v.clear(); } return 0; }
这个题目真的很猥琐。。一定不要忽视细节。。要求按照字典排序输出结果……
相关文章推荐
- Hive分布式安装
- 常见HTTP状态码
- 支持向量机分类入门实用指南
- 回答一个关于OSM技术栈的问题
- python 实现用ISBN从豆瓣获取图书信息
- iOS UIAppearance使用详解
- 《大数据时代:生活、工作与思维的大变革》读书笔记3(完)
- POJ 3126 Prime Path 筛法+最短路
- Bellmanford 最短路(1)
- 利用adaboost元算法提高分类性能
- 集合框架-Map练习-记录字母出现的次数
- Ubuntu14.04(从Nginx官方源)安装Nginx稳定版预编译包
- Spring使用util Schema
- 第二周学习进度
- Java 信号量 Semaphore 介绍
- 合并排序
- 数据库学习:for xml path
- PHP判断素数,循环,筛选——默认可执行时间秒数,默认可执行空间。用来测试运行效率
- Linux内核分析-构造一个简单的Linux系统MenuOS
- 分土地