【问题标题】:Find a 4 digits number without repetition找到一个不重复的 4 位数字
【发布时间】:2017-12-19 14:23:36
【问题描述】:

我收到了一个要解决的问题。我已经设法手动解决了它,但找不到确切的算法来解决它。

问题: 用户插入一个 4 位数字而不重复任何数字(可以有前导 0)。 算法需要找到这个数字。

有一个检查函数,它接收一个 4 位数字并返回有多少数字是正确的,有多少数字在正确的位置没有重叠,也没有提及哪个数字是正确的。 系统有 7 次尝试。

例如: 用户插入号码:0584

如果系统发送号码:6549

返回是:

1 项到位
1 项是正确的

【问题讨论】:

  • 如果你手动解决了这个问题,那么你可以自己想出一个算法。我们不是来帮你做作业的。
  • 当我说我用手解决它时,我的意思是我找不到任何一致的算法在任何情况下都会成功。
  • 这个问题似乎有什么问题,看起来你正在匹配用户输入和计算机给出的两个数字......所以只需运行一个 for 循环并检查数字没有到位
  • 如果您根本不知道,您可以简单地尝试所有可能的组合。但如果你想一想,你会想出一个方法来使用答案来消除一些在解决方案中不可能出现的数字。

标签: algorithm search


【解决方案1】:

我会尝试分两步解决这个难题:

  1. 尝试找出解决方案包含哪些 4 位数字。
  2. 对于错放的位置,请找到正确的顺序。

我不确定是否有一种算法可以始终在 7 个请求中找到解决方案,但这样您至少应该更接近解决方案。

这是一个难题,因此请考虑尽可能多地揭示解决方案信息的数字模式。并尝试从答案中提取尽可能多的信息,以减少仍然可能的解决方案的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2023-04-10
    • 2014-04-09
    • 2011-01-23
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多