1

 题目描述

给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。如输入3,输出‘CCC’,输入2019,输出‘MMXIX’。罗马数字与整数对应关系如下:

I             

1

V             

5

X             

10

L             

50

C             

100

D             

500

M             

1000

2
2

 贪心算法

贪心算法指对于一下找不到最优解的复杂问题,把它拆分成几个小问题,然后分别求出当前看来最好的选择,并将这些局部最优解当作整个问题的最优解。使用贪心算法,必须注意两个问题,一是要保证某个状态以前的过程不会影响以后的状态,只与当前状态有关(无后效性);二是要注意贪心算法得到的解是局部最优解,不一定是全局最优解。

此题中,贪心算法的应用体现在我们每次选择最大的数表示,比如300优先选择3个100而不是6个50。

3

 python代码实现

首先还是先建立一个字典,从大到小记录整数和罗马字母的关系,然后通过循环对表中取值进行遍历。









class Solution:    def intToRoman(self, num: int) -> str:        RomanDict = {1000:'M', 900:'CM', 500:'D', 400:'CD', 100:'C', 90:'XC', 50:'L', 40:'XL', 10:'X', 9:'IX', 5:'V', 4:'IV', 1:'I'}        s = ''        for i in RomanDict:            if num // i != 0:                s = s+RomanDict[i]*(num//i)                num = num%i        return s

本题还可以通过穷举法实现,思想虽然不复杂但是写的列表略长,暂时不进行展示啦~