C++代码示例:进制数简单生成工具

news2024/11/28 10:55:31

文章目录

  • 前言
  • 代码仓库
  • 内容
  • 代码(有详细注释)
  • 编译和运行命令
  • 结果
  • 总结
  • 参考资料
  • 作者的话

前言

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++代码示例:进制数简单生成工具。


参考资料

  • 学校《高级算法设计与分析》课程课件的算法思路

作者的话

  • 感谢参考资料的作者/博主
  • 作者:夜悊
  • 版权所有,转载请注明出处,谢谢~
  • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
  • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
  • 文章在认识上有错误的地方, 敬请批评指正
  • 望读者们都能有所收获

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1055648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode 在部分 Linux 设备上终端和文本编辑器显示文本不正常的解决方法

部分Linux设备上运行VSCode时&#xff0c;发现文本编辑器的缩放不明显&#xff0c;终端字体间距过大等。 这里以Kali Linux为例&#xff0c;其他Linux发行版请选择对应的系统内置的等宽字体 我们依次打开 设置 -> 外观 -> 字体 这里我们可以发现&#xff0c;Kali Linux默…

华为云云耀云服务器L实例评测|Elasticsearch的可视化Kibana工具安装 IK分词器的安装和使用

前言 最近华为云云耀云服务器L实例上新&#xff0c;也搞了一台来玩&#xff0c;期间遇到各种问题&#xff0c;在解决问题的过程中学到不少和运维相关的知识。 本篇博客介绍Elasticsearch的可视化Kibana工具安装&#xff0c;以及IK分词器的安装和使用。 其他相关的Elasticsea…

为什么需要工业物联网 (IIoT)?如何实施?

制造业数字化、网络化、智能化已经是大势所趋。这些特性都在改变着制造业的格局&#xff0c;进而影响着我们生活和工作的方式。工业物联网作为一种利用传感器、云计算、大数据和人工智能等技术&#xff0c;实现了工业设备、流程和服务的智能化&#xff0c;正逐渐成为制造业的发…

【U8+】查看余额表只有科目,没有借贷方发生额以及余额。

【问题描述】 使用用友U8时&#xff0c; 查询发生额及余额表过程中&#xff0c; 打开报表后&#xff0c;只有科目列&#xff0c;所有金额列都没有。 并且点击【还原列宽】没有没有任何反应&#xff1b;点击【栏目】后&#xff0c;发现栏目设置中全部为空。 【解决方法】 跟踪…

转转闲鱼交易猫链接源码搭建 独立后台

转转交易猫闲鱼后台源码&#xff0c;功能强大包含了多种模板和功能等等 后台一键生成链接&#xff0c;独立后台管理 教程&#xff1a;修改数据库账号 不会可以看源码里有教程 下载源码&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

2023年汉字小达人市级比赛题型示例和全真在线练习题

上一篇文章中&#xff0c;六分成长介绍了2023年汉字小达人市级比赛的相关安排和常见的问题解答&#xff0c;这篇文章我来给大家介绍具体的题型和典型试题&#xff0c;并且将这些模拟题做成了电子版&#xff0c;每次抽题150道&#xff0c;和市级比赛完全一样&#xff0c;尽早熟悉…

PHP 反序列化漏洞:身份标识

文章目录 参考环境访问修饰符访问修饰符PHP 与访问修饰符 手写身份标识身份标识定义身份标识控制字符 NUL在 PHP 中如何表示空字符&#xff1f; 通过空字符尝试构建包含非公共属性对象的序列化文本 空字符的传输控制字符的不可打印性结论另辟蹊径URL 字符编码将非 ASCII 字符文…

c#设计模式-结构型模式 之 组合模式

&#x1f680;简介 组合模式又名部分整体模式&#xff0c;是一种 结构型设计模式 &#xff0c;是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 &#xff0c;用来表示部分以及整体层&#xff0c;它可以让你将对象组合成树形结构&#xff0c;并且…

UE5报错及解决办法

1、编译报错&#xff0c;内容如下&#xff1a; Unable to build while Live Coding is active. Exit the editor and game, or press CtrlAltF11 if iterating on code in the editor or game 解决办法 取消Enable Live Coding勾选

摆脱推荐算法,实现万物皆可『RSS』

前言 相信各位对推荐算法已经很熟悉了&#xff0c;平台基于推荐算法不断推送我们感兴趣的信息&#xff0c;但是身处推荐算法中心&#xff0c;有时我们可能感觉视野越来越闭塞&#xff0c;原来节约我们时间的推荐系统&#xff0c;这时却成了困住我们的信息茧房 那么也许 RSS&a…

007:连续跌三天,第四天上涨的概率--可视化优化1

接着006&#xff0c;有一些问题&#xff0c;要手动改文件&#xff0c;麻烦&#xff0c;直接出来一个按钮&#xff0c;点击出现弹窗可以选择文件。 二来就是&#xff0c;所统计的数据&#xff0c;没有展示细节。应该展示的细节包括&#xff1a;股票代码&#xff0c;K线周期&…

JDK11优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析

一、前言 上一期讲了JDK10的一些新特性&#xff0c;需要回顾的朋友们可以去该专栏回顾一下 这一期讲一讲JDK11的一些新功能 二、新增特性 以下是JDK 11的一些新增或变化的特性&#xff1a; 1. 纯字符串类型的 HTTP 客户端: JDK 11 引入了一个新的 HTTP 协议的客户端 API&…

【STM32基础 CubeMX】定时器的使用

文章目录 前言一、定时器是什么二、CubeMX配置定时器三、代码分析3.1 CubeMX代码分析3.2 几个库函数以中断的方式开启定时器定时器中断函数 四、定时器应用4.1 定时器闪烁LED 总结 前言 在嵌入式系统开发中&#xff0c;精确地控制时间和时序是至关重要的。STM32微控制器提供了…

错误:F13 is an invalid placement site

在vivado中绑定引脚时提示&#xff1a;F13 is an invalid placement site f13引脚在板子上是接千兆网的rxclk端的。在进一步不排查出现这样的问题提示 Illegal to place instance u_gmii_to_rgmii/u_rgmii_rx/BUFIO_inst on site TIEOFF_X0Y326. The location site type (TIEOF…

14:00面试测试岗,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到9月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…

Java编程技巧:跨域

目录 1、跨域概念2、后端CORS&#xff08;跨域资源共享&#xff09;配置原理3、既然请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f;4、通过后端CORS&#xff08;跨域资源共享&#xff09;配置解决跨域问题代码4.1、SpringBoot&#xff08;FilterRegistrationBean&a…

鼠标移动视差玻璃态效果

效果展示 页面结构组成 从页面上可以看到页面的结构比较简单&#xff0c;主要的元素如下&#xff1a; 背景图片文字带有清晰中心圆的毛玻璃 但是在怎么组织这几个元素的层次关系就需要需要考虑一下&#xff0c;并且中间的圆怎么实现也是需要考虑的。 CSS 知识点 clip-path…

【红外图像】利用红外图像处理技术对不同制冷剂充装的制冷系统进行性能评估(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用 Elastic 输入包自定义你的数据摄取

作者&#xff1a;Ishleen Kaur Elastic 通过集成&#xff08;integrations&#xff09;实现了外部数据源和 Elastic Observability Solution 之间数据流的收集、转换和分析。 集成包通过封装多个组件来实现这一点&#xff0c;包括代理配置 (agent configuration)、数据收集输入…

基于微信小程序的二手闲置交易市场小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…