程序设计与算法
文章平均质量分 81
diyhoos
这个作者很懒,什么都没留下…
展开
-
动态规划(三)神奇的口袋||0-1背包问题
代码实现:递归实现#include<iostream>using namespace std;int a[30];int N;int Ways(int w, int k){//从前k种物品中选择一些,凑成体积w的做法物品 if (w == 0) return 1;//w=0,一个都不选,只有一种选法 if (k <= 0) return 0;//没有选择方法...原创 2018-06-11 14:55:30 · 637 阅读 · 0 评论 -
枚举
枚举基于逐个尝试答案的一种求解策略例题1:完美立方解题思路:四重循环枚举啊a,b,c,d,a在最外层,d在最里层,每一层都是从小到大枚举,a枚举范围[2,n]b范围[2,a-1]c范围[b,a-1]d范围[c,a-1]代码实现:#include<iostream>#include<cstdio>using namespace std;int main(){ i...原创 2018-06-05 14:43:32 · 836 阅读 · 0 评论 -
递归(一)
递归的基本概念一个函数调用其自身,就是递归求n!的递归函数int Factorial(int n){ if(n==0) return 1; else return n*Factorial(n-1);}运算过程:递归调用和普通函数调用一样是通过栈实现的递归的作用:替代多重循环解决本来就是用递归形式定义的问题将问题分解为规模更小的子问题进行求解例...原创 2018-06-06 14:23:57 · 138 阅读 · 0 评论 -
递归(二)
例 表达式计算代码实现#include<iostream>#include<cstring>#include<cstdlib>using namespace std;int factor_value();//读入一个因子,并返回其值int term_value();//读入一项,返回其值int expression_value();//读入表达式并返...原创 2018-06-06 18:18:52 · 109 阅读 · 0 评论 -
二分算法
二分查找函数写一个函数BinarySearch,在包含size个元素的、从小到大排序的int数组a里查找元素p,如果找到则返回元素下标,如果找不到,则返回-1.int BinarySearch(int a[],int size,int p){ int L=0;//查找区间的左端点 int R=size-1;//查找区间的右端点 while(L<=R)//如果区间不为空就继...原创 2018-06-07 12:59:29 · 5282 阅读 · 3 评论 -
分治
分治的基本概念把一个任务,分为形式和原任务相同,但是规模更小的几个部分任务,分别完成,或只需要选一部分完成。然后再处理完成后的这一个或几部分的结果,实现整个任务的完成。分治的生活例子——称假币分治的典型应用:归并排序数组排序任务可以如下完成:把前一半排序把后一半排序把两半归并到一个新的有序数组,然后再拷贝回原数组,排序完成。代码实现:#include<iostream>using n...原创 2018-06-07 16:10:25 · 1413 阅读 · 0 评论 -
动态规划(一)
递归程序#include<iostream>#include<algorithm>#define MAX 101using namespace std;int D[MAX][MAX];int n;int MaxSum(int i, int j){ if (i == n) return D[i][j]; int x = MaxSum(i + 1, j);...原创 2018-06-08 13:01:21 · 159 阅读 · 0 评论 -
动态规划(二) Help Jimmy || 滑雪
例 Help Jimmy题目链接:点击打开链接解题思路if(板子k左端正下方没有别的板子) {if(板子k的高度h(k)大于Max) LeftMinTime(k)=无穷大; else LeftMinTime(k)=h(k);}else if(板子k左端正下方的板子编号是m) LeftMinTime(k)=h(k)-h(m)+Min(Lef...原创 2018-06-11 10:50:25 · 332 阅读 · 0 评论