2017-06-15 63 views
0

我正在解决一个困惑。他们将是2参数。假设我给出a = 7,那么7将是最大值,如果b给1,那么它将从a中删除2b和2b + 1。即1,2和3将被删除,这些2,3将再次成为参数。需要帮助解决java程序级联puzzel

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

你必须更清楚一点,你真正要求的是非常难以遵循,看起来好像递归将是一个可行的选择,但在这个问题上没有明确答案是不可能的。 –

+1

你能否重构你的问题,很难理解你在问什么,英文不太清楚;另外,您能否使用正确的4格缩进来格式化代码 - 请。 – Artemis

+1

请使代码实际可编译,Java代码。 'li.remove {2b}'不是Java。 – yshavit

回答

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](正如我的理解你的问题,但它有点模糊)