摘要: 一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。 这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费 阅读全文
posted @ 2020-10-31 15:52 吹梦西洲 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 问题: 给定一个由n行数字组成的数字三角形,如下图所示: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大(每一步只能从一个数走到下一层上和它最近的左边的数或者右边的数)。 输入: 第一行是数字三角形的行数,接下 阅读全文
posted @ 2020-10-31 14:36 吹梦西洲 阅读(312) 评论(0) 推荐(0) 编辑
摘要: dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最好的决策序列使得这个问题有最优解 将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解,然后将这个子问题的答案保存 下来,下次又遇到的时候直接拿过来用即可 dp和分治的不同之处在于分治分解 阅读全文
posted @ 2020-10-31 14:33 吹梦西洲 阅读(116) 评论(0) 推荐(0) 编辑
摘要: //查找两个等长有序系列的中位数 时间复杂度为logn /* 解题思路 中位数满足大于且仅大于n-1个元素,小于且仅小于n个元素a_mid = (a_left + a_right) / 2b_mid = (b_left + b_right) / 2当a[a_mid]=b[b_mid]时,中位数为a[ 阅读全文
posted @ 2020-10-10 10:20 吹梦西洲 阅读(323) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>using namespace std; //单峰数组最大值算法 //要求 O(log n) //使用二分查找法 int BinarySearch(int *a,int left ,int right){ int mid = (left+right)/2; // 阅读全文
posted @ 2020-09-28 17:07 吹梦西洲 阅读(939) 评论(0) 推荐(0) 编辑
摘要: 输入样例: 在这里给出一组输入。例如: 6 -42 23 6 28 -100 65537 输出样例: 在这里给出相应的输出。例如: 5 #include <iostream>using namespace std;int count=0;//合并两个有序线性表 (两个线性表在一个线性表内)== 给数 阅读全文
posted @ 2020-09-28 16:15 吹梦西洲 阅读(547) 评论(0) 推荐(0) 编辑