《计算机算法设计与分析》笔记
文章平均质量分 73
庞老板
思考时啃啃手指头会更有灵感
展开
-
第3章 动态规划,算法分析题3-3 漂亮打印
n代表单词的数目; mlen代表一行可以打印的最大长度; m[i]表示:以第i个单词作为打印的第一个单词时,打印的最小‘丑陋’值为m[i]; len()函数返回改行打印第i个数到第j个数时的所占长度; ugly()函数根据改行打印的长度返回‘丑陋’值。 注:题目中要求的最漂亮的打印方案,所以‘丑陋’值越小,越漂亮。 动态规划法: #include #include原创 2013-04-25 21:59:04 · 4146 阅读 · 0 评论 -
第5章 回溯法,批处理作业调度
#include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MAXSIZE 10 #define INF 999999999 struct Job_Info { int t1, t2; }job[MAXSIZE]; int n; //作业数量 int solu原创 2013-04-16 14:32:30 · 1338 阅读 · 0 评论 -
第3章 动态规划 矩阵连乘问题
两个矩阵相乘的计算量 程序实现 //矩阵a和b相乘,p、q分别为a的行和列,q、r分别为b的行和列 void MatrixMultiply(int a[][MAXN], int b[][MAXN], int p, int q, int r) { int sum[MAXN][MAXN]; memset(sum, 0, sizeof(sum)); int i, j, k;原创 2013-03-31 18:03:03 · 35037 阅读 · 6 评论 -
第5章 回溯法,0-1背包问题
#include #include #include using namespace std; #define MAXN 10 struct Goods_Info { int v; //价值 int w; //重量 double vw; //价值重量比 }goods[MAXN]; int n; int maxValue; bool solu[MAXN]; bool opti原创 2013-04-24 13:05:40 · 2004 阅读 · 0 评论 -
第5章 回溯法,n皇后问题
#include #include using namespace std; #define MAXN 10 int n; //皇后数,棋盘大小 int q[MAXN]; //放置的皇后的位置,q[i]表示:第i个皇后的位置在第i行,第q[i]列 int count; //可行方案数 bool IsPlaceable(int x, int y) { int i; for (i原创 2013-04-23 16:54:22 · 1209 阅读 · 0 评论 -
第4章 贪心算法,Dijkstra算法(邻接矩阵存储,时间复杂度为O(n^2))
#include #include #include using namespace std; #define MAXSIZE 100 #define INF 999999999 int weight[MAXSIZE][MAXSIZE]; //边的权值 int shortest[MAXSIZE]; //源点到每个点的最短路径长度 bool vis[MAXSIZE]; //顶点原创 2013-04-17 15:18:10 · 6253 阅读 · 0 评论 -
第5章 回溯法,符号三角形问题
#include #include using namespace std; #define MAXSIZE 21 int n; //第一行符号个数 int signTriangle[MAXSIZE][MAXSIZE]; //符号三角形矩阵,矩阵最左侧一列不用 int count; //满足条件的符号三角形个数 int half; //符号总数的一半原创 2013-04-16 16:09:38 · 1942 阅读 · 0 评论 -
第5章 回溯法,装载问题
#include #include #include using namespace std; #define MAX 100 int c1, c2; //两船的载重量 int n; //货物数量 int w[MAX]; //货物重量 int maxw; //最大装载量 bool finished; //已达到装载最大量时,finished为true void Backtr原创 2013-04-14 19:22:03 · 2029 阅读 · 0 评论 -
第2章 递归与分治策略,二分搜索技术(查找不成功时,返回区间位置)
当要查找的数x不在有序数组a中时,返回第一个大于x的数的位置或第一个小于x的数的位置 lowend,midend,highend表示查找结束时各游标的值,low,mid,high表示使查找结束的最后一次操作时,各游标的值。 查找结束的条件是lowend>highend,由于lowend的值由mid+1得到,highend的值由mid-1得到,所以, 当lowend>highend原创 2013-05-26 11:54:13 · 1433 阅读 · 0 评论