Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*inutilizado
- private caminho dropaItens(int[][][] mat,caminho novo,int pesoMax) {
- //A solução criativa quase usada: Percorrer a lista e anotar peso e valor dos itens, e então usar um algoritmo para montar a combinação de pesos e testar com o max valor atual obtido
- //pesoitems[x][0]=linha
- //pesoitems[y][1]=coluna
- //pesoitems[x][2]=peso
- //pesoitems[x][3] se vai pegar(1) ou não(0)
- int[][] pesoItems=new int[novo.quantosItems][4];
- int[] valorItems=new int[novo.quantosItems];
- int index=0;
- //Percorre
- caminho aux=novo;
- while(aux!=null) {
- if(aux.colhe==true) {
- pesoItems[index][0]=aux.posX;
- pesoItems[index][1]=aux.posY;
- pesoItems[index][2]=mat[aux.posX][aux.posY][2];
- pesoItems[index][3]=0;
- valorItems[index]=mat[aux.posX][aux.posY][1];
- index++;
- }
- aux=aux.ant;
- }
- int maximoAtual=0;
- for(int i=0;i<valorItems.length;i++) {
- maximoAtual=Math.max(maximoAtual,(Soma(pesoItems,valorItems,i,0,0,new int[pesoItems.length],pesoItems[i][2],pesoMax))[0]);
- }
- //Passa setando quais pegou
- aux=novo;
- while(aux!=null) {
- aux.colhe=false;
- for(int i=0;i<pesoItems.length;i++) {
- if(aux.posX==pesoItems[i][0]&&aux.posY==pesoItems[i][1]&&pesoItems[i][1]==1) {
- //Colhe
- aux.colhe=true;
- }
- }
- aux=aux.ant;
- }
- return null;
- }
- private int[] Soma(int[][] pesoItems, int[] valorItems, int index, int SomaAtual, int tamanho,int[] escolhas, int pesoAtual, int pesoLimite) {
- if(pesoAtual>peso) {
- int[] v= {0};
- return v;
- }
- escolhas[tamanho]=index;
- if(tamanho>valorItems.length) {
- return escolhas;
- }
- for(int i=0;i<valorItems.length;i++) {
- //Deveria fazer alguma coisa em recursão aqui, mas acabou o tempo pra pensar
- Soma(pesoItems,valorItems,i,0,tamanho+1,new int[pesoItems.length],pesoAtual+pesoItems[i][2],pesoLimite);
- }
- return escolhas;
- }*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement