堆栈的框分配

时间:2014-11-11 20:37:11

标签: java

我们有无限数量的盒子堆叠在彼此之上。 p =第一个堆栈的大小

每个堆栈都是" k"比之前的堆栈大。

For example: p=3 k=2
1,2,3
4,5,6,7,8
9,10,11,12,13,14,15

现在,分配是移动用户定义的一个框,并计算它移动到其上方的框数,以便移动该特定框。用户将继续插入数量的方框,在变量d中定义了多天。

所以输入就像这样:

p=3 k=2 d=3(3 days aka 3 boxes to move)
5 (Box 5)
3
12

输出将是:6 ....为什么?因为它必须移动3个盒子来获得盒子5个盒子,盒子3个盒子和盒子12个盒子。

希望您了解这个概念,但我一直在努力将所有这些都正确地放入代码中。我在作业的某些方面取得了成功,但它似乎并没有正常运作。

它正确地给了我一系列的方框......但是当我输入数字时它没有正确计算....那个数字是(在哪个堆栈中),哪个是最顶层的数字堆栈,所以程序将减去它并获得它必须移动的数量的盒子。

希望你能帮我解决我做错了什么以及应该做些什么。

以下是我尝试的代码,但似乎无法正常工作:

import java.util.Scanner;

public class  A1 {   
    public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);

        int p = sc.nextInt(); 
        int k = sc.nextInt();
        int d = sc.nextInt();

        int base = 1;
        int size = p;
        int topNum = p+(p+k); 


        int e=0;
        int numBox = 0;
        int movedBox=0;
        int counter = 0;

    while(e<d) {
        numBox = sc.nextInt();
            e++;
        base=base+size; 

        size=size+k;   

        topNum=topNum+(size+k);

        movedBox=topNum-numBox;

counter=movedBox+counter;       

        }
    System.out.println(counter);



        }
    }

更新版本:

import java.util.Scanner;

public class  SO {   
    public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);

        int p = sc.nextInt(); 
        int k = sc.nextInt();
        int d = sc.nextInt();


        int height = p;
        int topNum = p; 

        int e=0;
        int numBox = 0;
        int movedBox=0;
        int counter = 0;


    while(e<d) {
        numBox = sc.nextInt();
            e++;
            while(topNum<numBox) { 
                height=height+k;
                topNum = topNum + height;
            }

        movedBox=topNum-numBox;

counter=movedBox+counter;       

        }
    System.out.println(counter);



        }
    }

0 个答案:

没有答案
相关问题