Olá,
Gostaria que me ajudassem na implementação de um programa, que tem sido sinónimo de dores de cabeça
Por exemplo se eu tiver as 4 "torres" seguintes:
Eu quero fazer com que o programa retire um bloco do topo de cada torre e que ele repita a operação para as que ficam. Primeiro seriam retirados os blocos 1, 4, 6, 10, depois 2, 5, 7, depois o 3, 8 e finalmente o 9.
O resultado no ecran seria então 1 4 6 10 2 5 7 3 8 9.
Já tentei tanta coisa mas nada funciona correctamente
Para a interface Queue, eu tenho:
Para o array:
Obrigado.
Gostaria que me ajudassem na implementação de um programa, que tem sido sinónimo de dores de cabeça
Por exemplo se eu tiver as 4 "torres" seguintes:
Código:
6
1 7
2 4 8
3 5 9 10
O resultado no ecran seria então 1 4 6 10 2 5 7 3 8 9.
Já tentei tanta coisa mas nada funciona correctamente
Para a interface Queue, eu tenho:
Código:
public interface IntQueue
{
public void put(int i);
public int get();
public boolean isEmpty();
}
Código:
public class IntQueueArray implements IntQueue
{
private int[] queue;
private int head, tail, size, maxN;
public IntQueueArray(int capacity)
{
queue = new int[maxN];
head = 0;
tail = 0;
maxN = capacity;
}
public void put(int i){
if (size < maxN) {
queue[tail] = i;
tail = (tail+1) % maxN;
++size;
}
}
public int get(){
int i = queue[head];
head = (head+1) % maxN;
--size;
return i;
}
public boolean isEmpty() {
return size == 0;
}
}