IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 整数转罗马数字c++ -> 正文阅读

[C++知识库]整数转罗马数字c++

  1. 题目:
    字符 数值
    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000
    例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给你一个整数,将其转为罗马数字。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-to-roman
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  1. 解题思路:
    我本来使用的是暴力解法,但是算法题要是使用暴力算法相当于是没做出来,参考了网上大神的代码之后才找到了这个解决方法。
    首先是我们可以分析出所有的数字都是由1000,900,500,400,100,90,50,40,10,9,5,4,1来表示,然后罗马数字的特点是每一位都是尽量采用最大的数来表示,我们可以联想到每次减去这个数当前所能包含的这个数组中的最大的一个数来最为当前位的罗马数字,这样就能依次表示出这个数,能想出这个方法的大神真是太厉害了!
  2. 解题代码:
string intToRoman(int num) {
        string res;
        int list[13] = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        string list2[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        for(int i =0;i < 13;i++){
            while(num >= list[i]){
                res.append(list2[i]);
                num -= list[i]; 
            }
        }
        return res;
    }
  1. tips:
//使用string()来进行字符串的分割时要分清此字符串是char数组还是string类对象,char数组是从0开始到这个索引,string类对象是从这个索引开始到结束。
string str13 = string("hello world",5)      // str13 = "hello"  而非  " world"


引用大佬文章(写的很全面很好):

https://blog.csdn.net/qq_30534935/article/details/82227364?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162946874416780265487310%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162946874416780265487310&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-3-82227364.ecpm_v1_rank_v29&utm_term=c%2B%2BSTRING&spm=1018.2226.3001.4187

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:10:21  更:2021-08-21 15:11:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 20:23:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码