编程之美
闪电侠的博客
追求优雅,简洁的代码
展开
-
【编程之美】寻找发帖水王课后习题
#include using namespace std; template void find(TYPE a[], size_t N) { TYPE c1, c2, c3; size_t n1 = 0, n2 = 0, n3 = 0; for (int i = 0; i < N; i++) { if (n1 == 0) { c1 = a[i], n1 = 1; }原创 2012-12-27 11:27:09 · 821 阅读 · 0 评论 -
[编程之美]子数组的最大乘积
方法一 使用动态规划逐步求解 #include using namespace std; int max_product(int a[], int n) { int *s = new int[n+1]; int *t = new int[n+1]; int *p = new int[n+1]; s[0] = 1; // s[i]表示前i个元素的乘积 t[n] = 1;原创 2012-12-27 11:27:16 · 640 阅读 · 0 评论 -
[编程之美]求数组中最长递增子序列
比如下列数组 最长递增子序列为1, 2, 4, 6,当我们考虑到第i个元素时,当前最大的递增子序列是完全由前一个元素的最大递增子序列确定的,而不管前面的排列是怎样,因此,这个问题满足无后效性,可以用动态规划来实现 LIS[i+1] = max{1, LIS[k] + 1}, array[i+1] > a[k] , k从0到i #include using namespace std;原创 2013-01-09 09:41:20 · 1118 阅读 · 0 评论 -
[编程之美]回溯法求解数组分割问题
编程之美p202 回溯法求解是将问题的解描述成一棵二叉树,向左延伸说明选择该结点,向右延伸说明不选择该结点,通过某一个扩展结点的时候,可以通过约束条件剪枝,从而达到降低算法时间复杂度的目的 #include #include #define N 5 using namespace std; int bs = 0; //表示搜索到的最好的子数组的和 int cs = 0; //表示当原创 2012-12-27 22:53:56 · 1086 阅读 · 0 评论