MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法二)
来源:互联网 发布:caxa是什么软件 编辑:程序博客网 时间:2024/06/05 10:25
#include <iostream>using namespace std;int V = 5;int F = 3; int main(){//定义美感数组int beauty[V][F] = {{7,5,-21},{23,21,5},{-5,-4,-4},{-24,10,-20},{16,23,20}};//定义最大美感得分和、相应方案int best_beauty = 0;//定义最优部分美感和数组,设定递推初值int best_partial[V + 1][F + 1] = {{0}}; //注意二维数组的赋零值方法 //定义记录新花瓶是否插花的数组bool put[V + 1][F + 1] = {{false}}; //输出方法二 //按 m 个花瓶插 n 朵花递推 for(int m = 1; m <= V; m++)for(int n = 1; n <= m && n <= F; n++){//默认新花瓶插花更优 best_partial[m][n] = best_partial[m - 1][n - 1] + beauty[m - 1][n - 1];put[m][n] = true; //输出方法二 if(n < m && best_partial[m][n] < best_partial[m - 1][n])//若新花瓶不插花更优 {best_partial[m][n] = best_partial[m - 1][n];put[m][n] = false; //输出方法二 }}//输出答案cout << "最大美感得分和:" << best_partial[V][F] << endl;cout << "插花方法:";for(int m = V, n = F; m >= 1; ) //输出方法二,这里是逆序输出,因为本题逆序计算量小 if(put[m][n]){cout << n;m--;n--;}else{cout << '0';m--;}return 0;}
在用动态规划算法解题时,输出方式也要考虑进来,简洁的输出方案将省去一些函数,让代码更简单。这也是一种优化。
阅读全文
0 0
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法二)
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法一)
- MOOC清华《程序设计基础》第6章:橱窗插花问题(枚举法)
- MOOC清华《程序设计基础》第6章:橱窗插花问题(递推法)
- MOOC清华《程序设计基础》第6章第3题:最大乘积问题(动态规划)
- MOOC清华《程序设计基础》第6章:最长公共子序列问题(动态规划)
- MOOC清华《程序设计基础》第6章第2题:求f(a,b)问题(动态规划)
- MOOC清华《程序设计基础》第5章:快速排序(不分配动态空间-算法二)
- MOOC清华《程序设计基础》第5章:N皇后问题(带矩阵输出)
- MOOC清华《程序设计基础》第4章:插花游戏-求素数
- MOOC清华《程序设计基础》第6章第1题:n级台阶问题(递推法)
- MOOC清华《程序设计基础》第6章第3题:最大乘积问题(递归法)
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- MOOC清华《程序设计基础》第6章:分鱼问题(不用数组递推)
- MOOC清华《程序设计基础》第5章:青蛙过河问题
- MOOC清华《程序设计基础》第5章:分书问题-代码二
- MOOC清华《程序设计基础》第5章:八皇后问题-代码二
- MOOC清华《程序设计基础》第5章:快速排序(分配动态空间)
- Service的完全详解
- DL比赛
- CSS实现垂直居中的常用方法
- Java_基础—File类的判断功能
- 2017年7月20日
- MOOC清华《程序设计基础》第6章:橱窗插花问题(动态规划,输出方法二)
- 数据预处理--数据降维
- 查找前K大的数
- 常用排序算法总结
- android让图片资源保持正圆不变形
- OSI的七层网络结构图和TCP/IP的结构图
- Abandon@
- 【DOS网络命令】-telnet的用法
- js console命令