2012年10月6日
摘要: 问题描述:将一个正数进行拆分,比如n=3 输出:(1+1+1,1+2,2+1,3)这个问题想了一下午才想透,利用递归可以进行解决。使用一个辅助数组来保存每一次递归的值。思路如下(输入n=3): 1、对于第一位的数字,应当从1遍历到3(即n,遍历index设为i),形式如:1+...., 2+.... ,n 2、对于第二位数字,是n-i这个数的遍历结果(递归) 3、需要保存下来遍历过程中的因子,便于输出整个中间结果数组 4、递归停止条件:如果n-i已经等于0,意味着可以打印输出了# include <stdio.h># include <stdlib.h># includ 阅读全文
posted @ 2012-10-06 17:34 暗夜的雪 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 以下是两道树方面问题的解:1、由前序遍历序列和中序遍历序列还原构造出一棵二叉树2、在一棵二叉树中寻找遍历路径上的值之和为指定数字的路径#include <iostream>#include <vector>struct BinaryTreeNode { BinaryTreeNode* m_left; BinaryTreeNode* m_right; int var;};BinaryTreeNode* ConstructCore(int* prestart,int* preend,int* midstart,int* midend){ BinaryTreeNode* ro 阅读全文
posted @ 2012-10-06 15:44 暗夜的雪 阅读(181) 评论(0) 推荐(0) 编辑