大数问题(一个特别大的数需要用数组或字符串来表示)
生活随笔
收集整理的這篇文章主要介紹了
大数问题(一个特别大的数需要用数组或字符串来表示)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
劍指 Offer 17. 打印從1到最大的n位數
輸入數字?n,按順序打印出從 1 到最大的 n 位十進制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數 999。
示例 1:
輸入: n = 1 輸出: [1,2,3,4,5,6,7,8,9]說明:
- 用返回一個整數列表來代替打印
- n 為正整數
遞歸實現排列的模板
// 枚舉所有情況 1-n位 每位都是0-9void dfs(int end, int index) {if (index == end) {save(); return;}for (int i = 0; i <= 9; ++i) {s[index] = i + '0';dfs(end, index + 1);}}C++代碼?
class Solution { private: //考慮大數問題 n特別大的時候 每個數需要用string或者數組來表示 //預設一個存n位數的字符串vector<int> nums;string s; public:vector<int> printNumbers(int n) {s.resize(n, '0');dfs(n, 0);return nums;}// 枚舉所有情況 1-n位 每位都是0-9void dfs(int end, int index) {if (index == end) {save(); return;}for (int i = 0; i <= 9; ++i) {s[index] = i + '0';dfs(end, index + 1);}}// 去除首部0void save() {int ptr = 0;while (ptr < s.size() && s[ptr] == '0') ptr++;//找到第一個非零位置if (ptr != s.size())nums.emplace_back(stoi(s.substr(ptr)));} };?
總結
以上是生活随笔為你收集整理的大数问题(一个特别大的数需要用数组或字符串来表示)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql报错130_Mysql报错Fo
- 下一篇: weka使用训练集分类测试集_科学网—使