Algorithm 生成";“有效”;数字

Algorithm 生成";“有效”;数字,algorithm,Algorithm,在一次采访中,我被问到以下问题。我不知道如何解决这个问题。有什么建议吗 给定起始和结束整数作为用户输入, 生成具有以下属性的所有整数 例如: 123 , 1+2 = 3 , valid number 121224 12+12 = 24 , valid number 1235 1+2 = 3 , 2+3 = 5 , valid number 125 1+2 <5 , invalid number 123,1+2=3,有效数字 121224 12+12=24,有效数字 1235 1+2=3,

在一次采访中,我被问到以下问题。我不知道如何解决这个问题。有什么建议吗

给定起始和结束整数作为用户输入, 生成具有以下属性的所有整数

例如:

123 , 1+2 = 3 , valid number
121224 12+12 = 24 , valid number
1235 1+2 = 3 , 2+3 = 5 , valid number
125 1+2 <5 , invalid number
123,1+2=3,有效数字
121224 12+12=24,有效数字
1235 1+2=3,2+3=5,有效数字

125 1+2实现这一点的两种方法是:

  • 测试输入范围内的每个数字,看它是否合格

  • 只生成符合条件的数字。对两个起始值使用嵌套循环,将循环索引的总和附加到循环索引中,以得出符合条件的数字。当附加的数字超过上限时,退出内部循环

  • 第二种方法的计算效率可能更高,但第一种方法更易于编写和维护,并且是O(n)


    我不知道面试官在寻找什么,但我怀疑沟通能力比答案更重要。

    解决这个问题的简单方法是迭代设定范围内的数字,将数字解析为数字序列,然后根据规则测试序列。这是一个优化问题,问题本质上要求您找到fibonnaci数,这样您就可以使用两个变量或寄存器并按顺序添加它们


    您的问题不清楚部件编号是否必须具有相同的位数。如果没有,则您必须生成组件编号排列的所有组合。

    因此,通常不愿意为您解决问题,更愿意帮助已经付出努力并陷入困境的人。在下一次面试中,你将从中得到教训:如果你不知道这类问题的答案,请解释你将如何开始计算答案,并借此机会展示你的实际问题解决技能,你对基本算法和离散数学的知识。做了所有这些,你就会得到帮助,尽管可能不是在面试期间。面试结束了,伙计,冷静点。我认为这样的问题是合理的,只要他们问一些可能有实际应用的算法问题。这样的问题通常是为了看看你如何处理问题。projecteuler()有很多这样的问题。在根本没有任何方法的情况下,从蛮力方法开始,然后在构建初始算法后添加改进。什么构成“有效数字”没有正确指定,它是模糊的。我同意phant0m。分量整数必须具有相同的位数吗?是否只需要两个部件编号?例如,1+2+3=6(1236)是有效数字吗?+1用于通信。这种模式对我来说并不明显。我敢打赌,他们想知道谁会在制定正确的规范之前直接进入代码破解模式。