Visualizzazione dei risultati da 1 a 10 su 32

Discussione: Problema backtracking

Hybrid View

  1. #1
    Allora in primis io non farei ricorsione, poi se è richiesto dalla consegna è un altro discorso.

    Tre classi
    Field
    Matrix
    Main e metodo main

    La classe Field ti ho già detto come modellarla.

    Classe Matrix
    codice:
    public class Matrix {
      private Field[][] campo;
      private int counter;
      private Matrix (int m, int n){ 
          inizializzi la matrice e gli oggetti contenuti
           counter=0;
      }
    
    
      public void createMyField(){
      //inizializzi con punti di interesse randomici
        
      }
    
      public int scanAndPutTower(){
         for (int i=0; i<n; i++){
           for (int j=0; j<n; j++){
             if (campo[i][j].isInteresting() && !(campo[i][j].isAlreadyChecked())){
               campo[i][j].setTower(true);
               counter++;
               //poi controllo i vicini stando attento ai bordi 
               //per semplicità ed per fretta evito questa parte tu ovviamente lo terrai in conto
             
               if(isCheckedField(campo[i][j+1]) break;
               if(isCheckedField(campo[i+1][j]) break;
               if(isCheckedField(campo[i-1][j]) break;
               if(isCheckedField(campo[i][j-1]) break; //quest'ultima si potrebbe anche evitare visto che è il tuo verso di lettura
             }
           }
         }
         return counter;
      }
       
      private boolean isCheckedField(int k, int w){
         if(campo[k][w].isInteresting() && !(campo[k][w].isTower()) && !(campo[k][w].isAlreadyChecked())){
           campo[k][w].setAlreadyChecked(true);
           return true;
         }
         return false;
      }
    }
    Main -- che potresti metterlo anche sotto Matrix
    codice:
    public class Main {
      public static void main(String[] args){
        Matrix matrix=new Matrix(4,4);
        matrix.createMyField();
        int towers=matrix.scanAndPutTower();
        System.out.println("Torri: "+towers);
     }

    Ho scritto di getto questo codice nei momenti di pausa del lavoro sicuramente è da affinare.

    Per il resto son qua.

    Ciao
    Ultima modifica di schumy2000; 09-09-2015 a 14:38
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    Allora in primis io non farei ricorsione, poi se è richiesto dalla consegna è un altro discorso.

    Tre classi
    Field
    Matrix
    Main e metodo main

    La classe Field ti ho già detto come modellarla.

    Classe Matrix
    codice:
    public class Matrix {
      private Field[][] campo;
      private int counter;
      private Matrix (int m, int n){ 
          inizializzi la matrice e gli oggetti contenuti
           counter=0;
      }
    
    
      public void createMyField(){
      //inizializzi con punti di interesse randomici
        
      }
    
      public int scanAndPutTower(){
         for (int i=0; i<n; i++){
           for (int j=0; j<n; j++){
             if (campo[i][j].isInteresting() && !(campo[i][j].isAlreadyChecked())){
               campo[i][j].setTower(true);
               counter++;
               //poi controllo i vicini stando attento ai bordi 
               //per semplicità ed per fretta evito questa parte tu ovviamente lo terrai in conto
             
               if(isCheckedField(campo[i][j+1]) break;
               if(isCheckedField(campo[i+1][j]) break;
               if(isCheckedField(campo[i-1][j]) break;
               if(isCheckedField(campo[i][j-1]) break; //quest'ultima si potrebbe anche evitare visto che è il tuo verso di lettura
             }
           }
         }
         return counter;
      }
       
      private boolean isCheckedField(int k, int w){
         if(campo[k][w].isInteresting() && !(campo[k][w].isTower()) && !(campo[k][w].isAlreadyChecked())){
           campo[k][w].setAlreadyChecked(true);
           return true;
         }
         return false;
      }
    }
    Main -- che potresti metterlo anche sotto Matrix
    codice:
    public class Main {
      public static void main(String[] args){
        Matrix matrix=new Matrix(4,4);
        matrix.createMyField();
        int towers=matrix.scanAndPutTower();
        System.out.println("Torri: "+towers);
     }

    Ho scritto di getto questo codice nei momenti di pausa del lavoro sicuramente è da affinare.

    Per il resto son qua.

    Ciao


    innanzitutto volevo ringraziarti ,magari ci fossero più persone come te disposte ad aiutare veramente. adesso provo il codice e poi ti dico....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.