Visitors hit counter dreamweaver
摘要: 题目:输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。解题思路:首先,要找的肯定是小于等于n/2+1的数。那么我们就可以从n/2+1开始向下每个数递归寻找,如果找到合适的情况,那么久输出即可。递归的时候,每次递归都是向下减一即可。代码://输入一个正数n,输出所有和为n连续正数序列。#include <stdio.h>int Sum(int n,int m);int main(){ int n,ret,i; scanf("%d",&n); for (i 阅读全文
posted @ 2013-05-29 16:01 Jason Damon 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 题目描述:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。解题思路:这是一道典型的用递归求解的题目。我们可以这样考虑问题,当只有一级台阶时,那么久只有一种跳法;当有两级台阶时,那么就会有两种跳法:一次跳一级或一次跳两级。当n>2时,那么我们就以用第一次跳时就可以跳一级或者两级,于是就有:f(n)=f(n-1)+f(n-2)。这样递归的公式就出来的,马上就可以用递归的方法来解决。但是递归的方式占用栈的空间是按照递归深度的级数递增的,所以递归只能求级数比较少的情况。代码://跳台阶#include <stdio.h>int Sta 阅读全文
posted @ 2013-05-29 15:29 Jason Damon 阅读(4167) 评论(0) 推荐(1) 编辑
摘要: 问题描述:将正整数n表示成一系列正整数之和:n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。正整数n的这种表示称为正整数n的划分。问题1:输出整数n的所有可能的划分,如:输入:6输出: 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1。我的思路:这种问题已经遇到过很多了,递归搜索所有可能的情况,同时为了记录下每一步的情况,那么就要用到一个数组mark来存储每一步的数,然后递归同时要传递递归的深度k。还有个问题就是递归下一个数的时候,因为是递减的排列的。所以我们还必须记录下... 阅读全文
posted @ 2013-05-29 14:35 Jason Damon 阅读(3611) 评论(0) 推荐(0) 编辑