我正在解决一个问题。他们将是2个参数。假设我给a = 7然后7将是最大值,如果b给1那么它将从a中删除2b和2b + 1。即1,2和3将被删除,这些2,3将再次成为参数。
ok if
input 1 =7
input 2 =1
input 3 ={1}
input3 i.e {1} will clear 2i and 2i+1 so {2,3} and {2,3} will clear{4,5,6,7}
output={0}
and if
input 1 =7
input 2 =2
input 3 ={2,7}
output={1,3,6}
{2,7}所以2将清除2以及4和5.但是7将仅清除7.因此我们将获得1,3,6。我希望现在有点清楚
Arraylist li = new arraylist{1,2,3,4,5,6,7}
if(2b>n and 2b+1>n)
li.remove{2b}
li.remove{2b+1}.
但是如何重复使用它。
答案 0 :(得分:0)
你需要一种在满足条件时结束的循环。你的答案中不清楚这种情况,但我想它应该在2b + 1 < a
时继续。
你会得到这样的东西(请注意,这是伪代码,我会把真正的代码留给你作为拼图):
li = arraylist(1,2,3,4,5,6,7)
a = 7
b = 1
while(2b+1 < n) {
// Remove items
li.remove(2*b)
b = li.removeAndGetValue(2*b+1)
// Reduce a by 2
a = a - 2
}
在此代码b
中更新了li[2*b+1]
的值(正如我从您的问题中所理解的那样,但它有点模糊)