【问题标题】:Get Target Number Using Number List and Arithmetic Operations使用数字列表和算术运算获取目标数字
【发布时间】:2018-03-09 05:17:41
【问题描述】:

我有 2 个输入:

  • S[] = 数字列表
  • 目标值

S{2,9}

目标值 = 729

我想使用这些给定的数字找到一个算术运算,它可以生成目标值。我们可以根据需要多次使用任何数字。只允许求和和乘法运算。

例如:9*9*9 = 729

另外,我们可以使用数字的组合。

例如:

S{2,9}

目标值 = 49

所以解决方案可以是:

2+9+9+29 = 49

我想通过 C++ 使用动态编程方法。

【问题讨论】:

  • 你的问题是?
  • 我想知道构建这个程序的逻辑。
  • 除了使用动态规划之外,你不知道怎么做吗?
  • 不,我对此一无所知。
  • edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask

标签: c++ expression dynamic-programming


【解决方案1】:

思考这个算法。

1.使用该数字集制作所有数字。 {2, 9} 目标=729 n = 数字集数字 - 使数字混合的数字低于目标, 并且可以复制。 数字长度1; n 计数; 2、9 数字长度2; n*n 计数; 22、29、92、99 数字长度3; n*n*n 计数; 222、229、292、299、922、929、992、999 (删除大于 729 的) 数字长度 4 ;再也找不到了。目标长度为 3。 - 使新数字由上找到的数字设置 2、9、22、29、92、99 222、229、292、299 m = # 上集。 o = 2(运营商数量) -and 操作案例...使用运算符加和乘。 2.进行操作设置。 使用 1 个节点;检查上面的元素是否等于目标 米案例 使用 2 个节点;选择 2 个元素。并选择运算符。 1 操作员使用。 m*m * o 例 使用 3 个节点;选择 3 个元素。并选择运算符。 2运营商使用。 m*m*m * o*o 例 等等。 但是这样做了多少次? 在更坏的情况下, 如果数字集有 1。 1+1+1+...=目标(729次) 而这个问题... 1*1*1*... 无限情况... 1*9*9*9, 1*1*1*9*9*9, 1*...*1*9*9*9, ...

需要一些限制。需要更高效的算法。

【讨论】:

  • 你能给我基本的 C++ 代码吗?我已经想到了这个逻辑,但无法开发出合适的程序。
  • @GauravParvadiya 为什么你不能编码?更加详细一些。展示您尝试过的内容以及您遇到的具体问题。您至少应该能够编写部分代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2018-01-27
  • 2017-06-29
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多