Algorithm 在有一定限制的情况下在号码线上移动汽车。找出哪辆车可以';t达到和达到特定数字的最佳方式
想象一辆汽车在从0开始的数字线上。汽车可以在有约束的情况下向前和向后移动,我们必须给出向前和向后移动的指令:- 汽车将以1步开始移动,每次移动后,汽车加速度将增加1。 例如 汽车在起动时处于0位置Algorithm 在有一定限制的情况下在号码线上移动汽车。找出哪辆车可以';t达到和达到特定数字的最佳方式,algorithm,numbers,Algorithm,Numbers,想象一辆汽车在从0开始的数字线上。汽车可以在有约束的情况下向前和向后移动,我们必须给出向前和向后移动的指令:- 汽车将以1步开始移动,每次移动后,汽车加速度将增加1。 例如 汽车在起动时处于0位置 假设我们让汽车向前移动 2.汽车将向前移动1步,所以现在汽车处于+1 假设我们让汽车向前移动 3.汽车将向前移动2步,所以现在汽车处于+3 假设我们让汽车向前移动 4.汽车将向前移动3步,所以现在汽车处于+6 假设我们让汽车向前移动 5.汽车将向前移动4步,所以现在汽车处于+10 假设我们让汽车向后移
假设我们让汽车向前移动
2.汽车将向前移动1步,所以现在汽车处于+1 假设我们让汽车向前移动
3.汽车将向前移动2步,所以现在汽车处于+3 假设我们让汽车向前移动
4.汽车将向前移动3步,所以现在汽车处于+6 假设我们让汽车向前移动
5.汽车将向前移动4步,所以现在汽车处于+10 假设我们让汽车向后移动
6.汽车将向后移动5步,所以现在汽车处于+5 假设我们让汽车向后移动
7.汽车将向后移动6步,所以现在汽车处于-1 假设我们让汽车向前移动
8.汽车将向前移动7步,所以现在汽车处于+6 等等 所以现在的问题是,汽车能否以这种方式行驶:-
1.哪些数字不可能得出?
2.是否有任何算法可以计算出到达数字X的最小迭代次数?
我自己已经尝试了很多,试图找到任何模式和算法,也试图在互联网上找到这个问题的任何解决方案,但没有得到比暴力解决方案更好的解决方案。请帮忙
-n+(n+1)=1
,所以要得到任何n
一个人可以使用2N
连续数字1
开始添加,直到到达N
或超出它。在超调的情况下,有两种可能性:
- 45:
1+2+3+4+5+6+7+8+9+10=55,所以过冲是均匀的,遵循(2.1)。
1+2+3+4-5+6+7+8+9+10=45 - 46:
1+2+3+4+5+6+7+8+9+10=55,所以超调量是奇数。
1+2+3+4+5+6+7+8+9+10+11=66,所以过冲是均匀的,所以遵循(2.1)。
1+2+3+4+5+6+7+8+9-10+11=46 - 12:
1+2+3+4+5=15,所以超调是奇数。
1+2+3+4+5+6=21,超调仍然是奇数,减去。
1+2+3+4+5+6-7=14,超调是均匀的,所以遵循(2.1)。
-1+2+3+4+5+6-7=12 - 5:
1+2+3=6,因此超调量是奇数。
1+2+3+4=10,仍然是奇数,所以再减去下一个数字。
1+2+3+4-5=5,因此过冲均匀且为零,无需转到(2.1)
- 我们应该有一个
O(1)
解决方案。考虑树:
0
-1 1
-3 1 -1 3
-6 0 -2 4 -4 2 0 6
-10 -2 -4 4 -6 2 0 8 -8 0 -2 6 -4 4 2 10
-15 -5|-7 3|-9 1|-1 9|-11 -1|-3 7|-5 5|3 13 (left side, right is a mirror)
奇数,+偶数=奇数,+奇数=偶数,+偶数=偶数,
+奇数=奇数,+偶数=奇数,+奇数=偶数…等等
请注意,树的每一层都扩展了偶数或赔率,但更重要的是,列表是完整的,包括正面和负面:
晚上:
0
0, ±2, ±4, ±6
0, ±2, ±4, ±6, ±8, ±10
赔率:
我们寻找相等或下一个更高数字的第一次出现,它是其中一行中的最后一个元素,我们知道它的O(1)
公式。我们正在寻找的号码一定会包含在同一级别中
±1
±1, ±3
±1, ±3, ±5, ±7, ±9, ±11, ±13, ±15