C++伪代码:在 c++ 中从其伪代码实现算法(pseudocode for c++)

Im trying to implement a recursive algorithm of Change problem from the following pseudocode enter image description here

但我不知道如何正确实现它,我的目标是学习如何阅读伪代码,而不是如何解决更改问题。

这里是我在 c ++ 中的代码

int recChange(int money){
    int coins [6] = { 50, 25, 20, 10, 5, 1 };
    if (money == 0) return 0;
    int minNumberCoins;
    for (int i=0; i < 6; ++i){
        if (money >= coins[i]) {
            int numberCoins = recChange(money - coins[i]);
            if (numberCoins + 1 < minNumberCoins ){
                minNumberCoins = numberCoins + 1;
            }
         }
     }
     return minNumberCoins;
}
3

伪代码:

MinNumCoins ← ∞

这说明“将 MinNumCoins 初始化为无穷大”。

您的等效代码:

int minNumCoins;

这声明了minNumCoins,但未初始化。这不仅不是伪代码的状态,而且由于代码随后使用未初始化的变量,这导致未定义的行为。

有两种基本的方法来实现这个伪代码:

1)使用第二个变量,该变量指示是否已设置该值。将变量初始化为无穷大的目的是找到为其计算的最小值。每次尝试时,都会计算出MinNumCoins的潜在候选值,如果该值小于MinNumCoins的当前值,则新值将替换该值。MinNumCoins最终计算出最小值。

通过用正无穷大初始化变量,这具有取MinNumCoins的第一个计算值并设置它的效果(因为第一个计算值将始终小于无穷大)。

替换逻辑使用第二个变量(一个标志)来指示值是否已被设置。如果不是,则无论值是什么,该值都会被设置;但是如果变量已被设置,则代像往常一样将其与新的计算值进行比较,并在计算值小于现有值时对其进行更新。

2)第二种方法是将变量初始化为最高可能值。没有“无穷大”的值,可以将int设置为。最接近的候选项将是int可能设置的最高最大值。这将是:

#include <limits>
int MinNumCoins = std::numeric_limits<int>::max();

这个有点“黑客”是否会是你的问题的可接受的解决方案,是你决定的事情。

1

而且,“从所有(!)退后...(ahem)...”

...可能从而揭示了我的年龄...(koff)...

...请记住,“代码”是唯一的(!!)曾经打算:“a(非常精确...)表示两个人类可能希望彼此表达算法。”

当两个选择“用伪代码”描述特定的算法时,他们之间隐含地理解为他们选择了根据特定的编程(语言或样式)进行通信。他们都很熟悉。”但是,这应该扩展为表示在“他们在说什么”和“计算机”之间存在任何直接的 1:1 对应关系。

0

好吧,我在这里可以看到的一个问题是,您已经声明了 minNumber 硬币,但是您还没有将其专门初始化为任何数字。结果,它在开始时将具有 0(零)的值,并且当将其与正数进行比较时,它将永远不会返回 true,因为它不大于正数。这就是为什么您的程序无常工作的原因。在实现伪代码时,我没有看到任何其他问题。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(386)
Balm和cream的区别:“冰淇淋三明治”和WRITE_APN_SETTINGS
上一篇
氯化聚乙烯cpe:飞利浦huebridgevie华为CPE 2的互联网连接失败
下一篇

相关推荐

  • docker游戏服务器:如何使用Docker搭建高性能的游戏服务器

    Docker游戏服务器是一种将游戏服务器部署到容器中的方式,它可以帮助游戏开发者快速、轻松地部署游戏服务器,并且可以更轻松地扩展游戏服务器的容量。…

    2023-04-27 09:55:33
    0 61 67
  • javascript数组:排序和搜索

    javascript数组是一种特殊的对象,它可以存储多个值,这些值可以是任何类型的数据。JavaScript数组的元素可以通过索引来访问,数组的索引从0开始,每个元素都有一个索引值。…

    2023-08-28 11:30:24
    0 14 34
  • coremail论客邮箱Coremail论客邮箱

    Coremail论客邮箱是一款专业的企业邮箱服务,可以满足企业对安全、可靠性和高效性的要求。它拥有强大的安全性能,可以提供多种安全保护,包括防止邮件被窃取、拦截恶意邮件、防止跨站脚本攻击等。此外,它还支持多种企业级功能,如组织架构管理、收发邮件管理、文件共享管理、联系人管理等,可以帮助企业提高工作效率,提升企业形象。…

    2023-02-25 04:36:55
    0 79 61
  • canvas下载安装:Unleash the Power of Canvas to Create Amazing Visuals

    Canvas是一种HTML5技术,可以在网页上创建和绘制2D图形。它是一个JavaScript API,可以使用JavaScript代码来绘制图形,并且可以添加各种效果,如阴影,渐变,动画等。…

    2023-03-08 00:48:14
    0 92 11
  • class定位:The Benefits of Using Class Selectors for Element Locati

    示例示例class定位是一种CSS布局技术,用于指定HTML元素的位置,可以使元素放置在页面的任何位置。代码示例:…

    2023-03-06 07:16:44
    0 47 75
  • security code怎么填保护您的数据和隐私

    示例示例code是一种防止自动提交表单的安全措施,通常会在表单中显示一个图片,用户需要输入图片中显示的字符。以下是一个简单的 code代码示例:…

    2023-03-20 09:31:54
    0 26 93
  • for循环中的continue:使用continue跳过循环中的某些步骤

    示例示例是 for 循环的一个控制语句,它用于跳过当前循环的剩余代码,然后继续执行下一次循环。下面是一个使用 语句的示例:…

    2023-07-11 15:34:46
    0 98 70
  • javascript 常量:如何利用JavaScript常量提高编程效率

    示例示例常量是一个不可变的值,它的值在声明之后不能更改。它们可以用来存储程序中使用的固定值,并且可以被多次使用。代码示例:…

    2023-06-16 03:01:55
    0 14 92

发表评论

登录 后才能评论

评论列表(55条)