2013年5月26日

摘要: 输入两个整数m和n,从数列1,2,3...n中随意取几个数,使其和等于m,要求将所有可能组合列出来。已知有10分、5分和1分硬币无限个,要求把所有和为n分的组合列出来。1、思路: 定义函数F(n,m)为取n个数和为m的策略有两种选择,分别是F(n-1,m)和F(n-1,m-n)。 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 template <typename T> 7 void PrintVector(vector<T>& vec) 8 { 阅读全文
posted @ 2013-05-26 21:40 月moon鸟 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。(附加:除遍历计数器与a[N] b[N]外,不可使用新的变量,包括栈临时变量、堆空间和全局静态变量等);有一个整数数组,求出连续子数组的和的绝对值的最小值。1、思路: 先从前往后: B[0]=1, B[1]=A[0], B[2]=A[0]×A[1]... 再从后往前: temp = 1, temp *= A[n], B[n - 1] *= temp. 就得到除去n-1个数以外,其他数的乘积。 时间复杂度O(n),空间复杂度O(1),符合题目要求。 1 int M 阅读全文
posted @ 2013-05-26 15:44 月moon鸟 阅读(377) 评论(0) 推荐(0) 编辑

导航