Preciso de uma ajuda

7 respostas
R

E ai galera blz…!!! sou novo no forum.

primeira msg que estou enviando e ja vou encomodar todo mundo pedindo ajuda…!!! desculpe ai galera.

bem to precisando de uma ajuda de alguem que tenha conhecimento em JAVA. preciso fazer um programa.
quem faz programacao deve conhecer ele. trata-se do problema de Josephus

ai vai a descricao do problema, oq precisa ser feito…!!!

===============================================
O problema de Josephus, consiste de um grupo de soldados sitiados pelo exército inimigo. Não há chance de vitória sem que cheguem reforços, mas só há um cavalo disponível para poder buscar reforço. Os soldados concordam com um pacto para determinar qual deles irá buscar ajuda. Eles formam uma circunferência e cada um coloca num chapéu um papel contendo um número aleatório e outro com seu nome. Aí é sorteado um número e um nome. Começando do soldado, cujo nome foi sorteado eles começam a contar no sentido horário em volta da circunferência. O soldado em que terminar a contagem do número sorteado é removido da circunferência. Um outro número aleatório é sorteado e inicia-se novamente a contagem, só que agora é a partir do homem seguinte ao que saiu. O processo continua removendo um homem de cada vez. O último homem que restar é o que irá fugir no cavalo para buscar ajuda.

Desenvolva uma aplicação em Java que simule o problema de Josephus. Sua aplicação deverá apresentar um layout através do qual é possível inserir o nome dos soldados (10 soldados), a seqüência dos soldados, a ordem em que os soldados são excluídos e os números aleatórios que são sorteados. É obrigatório o uso de estruturas de dados para a resolução do problema.

quem pode me ajudar nisso… estarei eternamente agradecido…!!!

att

Daniel

7 Respostas

B

Mas o seu problema é de Java? ou de algoritmia? se for de Java é só colocar a sua duvida que qualquer pessoa o irá ajudar… se o problema for de algoritmia acho que ninguem está disposto a resolver o problema por si… e afinal de contas qual seria a piada disso? a parte divertida da programação é resolver problemas de lógica, sem isso deixa de ser divertido…

Peace!

PS: Posso lhe adiantar que muito provavelmente o seu problema irá ter um método recursivo…

R

Mas o seu problema neste caso não é o Java… e sim lógica e estutura de dados… neste caso vc vai ter que usar lista encadeada… não tem na internet já pronto ??? Não pode ter preguiça não, vamu lá, abrindo um IDE ai e mandar ver… ou vc não prestou a atenção na aula ??? :roll:

R

Meu problema é Java memso…

pois estou comecando a aprender agora…

e o maldito do meu professor ja passa um trabalho desse para fazer…!!!

simplesmente ninguem conseguiu ate agora…!!!

logica eu sei… ate mesmo eu fiz o programa na linguagem C. mas Java nem ideia…!!!

esse é o meu problema…!!!

att

Daniel

B

Meu conselho é que voçê comece a fazer o programa, e vir aqui tirar duvidas sempre que precisar… caso voçê nem sequer saiba por onde começar, é sinal que ainda não tem as bases necessárias para programar em Java, e também não é num post aqui no forum que as vai aprender, aconselho-o a sacar o livro “Thinking In Java” do seguinte site: http://www.bruceeckel.com/, foi a partir daqui que eu aprendi a programar em Java.

Boa sorte!

E

“Morcego”:
Meu conselho é que voçê comece a fazer o programa, e vir aqui tirar duvidas sempre que precisar… caso voçê nem sequer saiba por onde começar, é sinal que ainda não tem as bases necessárias para programar em Java, e também não é num post aqui no forum que as vai aprender, aconselho-o a sacar o livro “Thinking In Java” do seguinte site: http://www.bruceeckel.com/, foi a partir daqui que eu aprendi a programar em Java.

Boa sorte!

Concordo, essa é a melhor forma.

C

Acho q fazendo uma lista circular e mudando o head sempre pro próximo soldado q sair, teu problema tá resolvido, agora COMO fazer… o negócio é se virar e correr atrás, aki é um tira dúvidas apenas(como c fosse pouco)… heheheh :lol:

L

Pessoal, acabei de ingressar ao fórum. Estou fazendo o problema de josephus e está dando um erro que não consigo resolver:

PROBLEMA DE JOSEPHUS) Soldados cercados pelo inimigo decidem que um deles deve tentar escapar para buscar reforços usando o único cavalo
disponível. Forma-se um círculo (lista circular duplamente ligada), sorteia-se um número e se começa a contar os nós
da lista até que se chegue ao número escolhido. Quando o soldado (nó) é retirado. O processo reinicia e continuará
se repetindo até que um último soldado seja o escolhido. Escreva o método estático josephus(lista,n) que seleciona
o nó vencedor de uma lista circular representada por lista, que deve ser do tipo DoubledLinkedList (criada no exercício 3)
em sorteios dados por contagens de n. A contagem de n nós alternará à esquerda e à direita.

public class Josephusexec {

/**

  • @param args
  • @return
    */
    public static void josephus(CircDoubleLinkedList soldados , int n){

int eliminacoes = 0;

while(soldados.getFirst() != soldados.getLast()){

DoubleNode teste = soldados.getFirst();
int contador=0;

if(eliminacoes%2==0){

while(contador < n){

teste = (DoubleNode)teste.getNext();

contador++;

}

soldados.remove(teste);

eliminacoes++;

}

else{

while(contador < n){

teste = (DoubleNode)teste.getPrevious();

contador++;

}

soldados.remove(teste);

eliminacoes++;

}

}

Soldado ultimo = (Soldado)soldados.getFirst().getInfo();
System.out.println((String)ultimo.getNome());

}

public static void main(String[] args) {
// TODO Auto-generated method stub

Soldado a = new Soldado(alberto);

Soldado b = new Soldado(breno);

Soldado c = new Soldado(carlos);

Soldado d = new Soldado(diego);

Soldado e = new Soldado(emerson);

CircDoubleLinkedList grupo = new CircDoubleLinkedList(a);

grupo.inserir(b);

grupo.inserir©;

grupo.inserir(d);

grupo.inserir(e);

josephus(grupo , 3);

}
}

Já fiz todoso os teste na classe DoubleLinkedListCircular e está correta, porém o problema de josephus não está rodando, está acontecendo ahco que um laço infinito, porém não consigo achar o erro. alguém ajuda?
Obrigada

Criado 18 de novembro de 2003
Ultima resposta 21 de abr. de 2009
Respostas 7
Participantes 6