C++代码示例:进制数简单生成工具
作者:小教学发布时间:2023-10-03分类:程序开发学习浏览:81
导读:文章目录前言代码仓库内容代码(有详细注释)编译和运行命令结果总结参考资料作者的话前言C++代码示例:进制数简单生成工具。代码仓库yezhening/...
文章目录
- 前言
- 代码仓库
- 内容
- 代码(有详细注释)
- 编译和运行命令
- 结果
- 总结
- 参考资料
- 作者的话
前言
C++代码示例:进制数简单生成工具。
代码仓库
- yezhening/Programming-examples: 编程实例 (github.com)
- Programming-examples: 编程实例 (gitee.com)
内容
- 简单地生成进制数
- 有详细的步骤解析
代码(有详细注释)
cdigital.cpp
#include <vector>
#include <iostream>
using std::cout;
using std::endl;
using std::vector;
class CDigital
{
public:
CDigital(const vector<int> &bases) : bases(bases), curDig(0), digCount(0) {}
bool next()
{
// 第一次进入初始化当前组合,如bases.size()=3,this->curDig为000,从000开始遍历
if (this->curDig.empty() == true)
{
this->curDig.resize(bases.size(), 0); // 初始化所有位置为0
++this->digCount;
return true;
}
// 1. 从后向前找到第一个不是该位置最大值的位置,
int curPos = bases.size() - 1;
while ((curPos >= 0) && (this->curDig.at(curPos) == this->bases.at(curPos) - 1)) // 是最大值就移动位置
{
--curPos;
}
if (curPos < 0)
{
return false; // 都是最大位置,组合结束
}
// 2. 然后把该位置数据加1
++this->curDig.at(curPos);
// 3. 最后把后面的各个位置写对应的最小值
// 一般进制的最小值都为0
for (int right = curPos + 1; right < this->bases.size(); ++right)
{
this->curDig.at(right) = 0;
}
++this->digCount;
return true;
}
inline void printCurDig()
{
for (const int d : this->curDig)
{
cout << d << " ";
}
cout << endl;
}
inline void printDigCount()
{
cout << this->digCount << endl;
}
private:
const vector<int> bases; // 各个位置的进制
vector<int> curDig; // 当前数字“组合”
int digCount; // 数字组合数的数量
};
int main()
{
const vector<int> bases{4, 5, 3}; // 不同位置的进制数/取值范围 4表示0~3
CDigital dig(bases);
while (dig.next())
{
dig.printCurDig();
}
dig.printDigCount();
return 0;
}
编译和运行命令
g++ -o cdigital cdigital.cpp
./cdigital.exe
结果
总结
C++代码示例:进制数简单生成工具。
参考资料
- 学校《高级算法设计与分析》课程课件的算法思路
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版