贪婪算法解决 Integer to Roman 问题
来源:互联网 发布:sonyz3compact知乎 编辑:程序博客网 时间:2024/05/22 12:51
常写算法,多动脑,不会老!
理论太枯燥,先来个实际场景,场景取自 LeetCode 12 —— Integer to Roman 问题。要求能把 1~3999 的整型数字转化罗马数字。
先科普一下罗马数字,如下表所示:
需要注意的是,罗马数字同一数码最多出现三次,也就是说有一些数字比较特殊,例如:4——IV,9——IX,400——CD(右加左减的原则)。
代码示例:
string intToRoman(int num) { vector<int> numPattern{1000,900,500,400,100,90,50,40,10,9,5,4,1}; vector<string> strPattern{"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; string romanStr = ""; for (size_t i = 0; i < numPattern.size(); i++) { while (num >= numPattern[i]) { num -= numPattern[i]; romanStr += strPattern[i]; } } return romanStr;}
从上述代码可以看出,把一些比较特殊的整型数字点和对应的罗马字符串都列举出来,利用贪婪算法进行匹配映射,代码十分简洁,且运行效率也较高。
简要科普一下贪婪算法的基本思路和算法过程
贪婪算法的基本思路:
从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。当然,该算法也存在一些问题:
1. 不能保证求得的最后解是最佳的;
2. 不能用来求最大或最小解问题;
3. 只能求满足某些约束条件的可行解的范围。
实现该算法的过程:
从问题的某一初始解出发;
while 能朝给定总目标前进一步 do
求出可行解的一个解元素;
由所有解元素组合成问题的一个可行解;
当然,对于 Integer to Roman 问题,使用贪婪算法再合适不过了。
阅读全文
1 0
- 贪婪算法解决 Integer to Roman 问题
- 每日算法之十一:Integer to Roman
- 每日算法之十二:Roman to Integer
- LeetCode算法题之Roman to Integer
- 13. Roman to Integer leetcode算法笔记
- LeetCode算法题目: Integer to Roman
- 算法系列——Integer to Roman
- 算法系列——Integer to Roman
- 算法系列——Roman to Integer
- (算法分析Week2)Roman to Integer[Easy]
- 15算法课程 13. Roman to Integer
- 贪婪算法解决背包问题
- 贪婪算法解决背包问题
- 1Roman to Integer 2 Integer to Roman 3 Integer to English Words转化问题
- leetcode题解||Integer to Roman问题
- leetcode题解 || Roman to Integer问题
- Integer to Roman问题及解法
- Roman to Integer问题及解法
- 简述 Hbase && Hive
- cocos2dx 2.2.x版本和3.0以上版本创建项目
- jupyter安装及配置scala、spark、pyspark内核
- Android数据绑定技术一,企业级开发
- linux
- 贪婪算法解决 Integer to Roman 问题
- 判断网络封装类..
- 京东商品评论情感分析:数据采集与词向量构造方法
- 字符串拼接方法
- nyoj 448 寻找最大数、最小数
- solr 7.1 安装及初始化笔记
- 本周计划
- android 订单查看
- 保存网页图片的方法