Java

Fermé
Mars - 7 déc. 2013 à 14:42
Bonjour,
je suis un débutant avec java .pour résoudre un problème de matrice magique j'utilise le code suivant:


import java.util.Scanner;


public class TpMAlgorithmique1 {

public static int n=3;
public static int somme=n*(n*n+1)/2;
public static boolean SommeLigne(int []input){
int som1=0;
int som2=0;
int som3=0;
boolean b=false;

for(int i=0;i<n;i++){
som1+=input[i];

}
for(int i=n;i<2*n;i++){
som2+=input[i];
}
for(int i=2*n;i<n*n;i++){
som3+=input[i];
}
if((som1==somme)&&(som2==somme)&&(som3==somme)){
b=true;

}
else {
b=false;
}

return b;
}
public static boolean someDiagonales(int input[]){
boolean b;
int som4=input[0]+input[4]+input[8];
int som5=input[2]+input[4]+input[6];
if((som4==somme)&&(som5==somme)){
b=true;
}
else {
b=false;
}

return b;
}
public static void affichage(int input[]){
if((someDiagonales(input))&&(SommeLigne(input))){

System.out.println("cette solution est optimal"+input);
}

}

public static int counter = 0;

public static void Permute(int[] input, int startindex) {
int size = input.length;
int t[]=new int [n*n];
if (size == startindex + 1) {
System.out.println(counter + "solution ");
for (int i = 0; i < size; i++) {
System.out.print(input[i] + ", ");

t[i]=input[i];
}

System.out.println();
System.out.println("**************************");
counter++;

} else {
for (int i = startindex; i < size; i++) {

int temp = input[i];
input[i] = input[startindex];
input[startindex] = temp;
Permute(input, startindex + 1);

}

affichage(t);

}
}
public static void main(String[] args) {

// TODO code application logic here



int arraylength = n*n;
int[] input = new int[arraylength];


for (int i = 0; i < arraylength; i++) {
input[i] = i+1;
}
counter = 0;
Permute(input, 0);

System.out.println(counter + " number de solutions realisable ");


}
}
mais les solution optimal n'affiche pas. pouvez-vous m'aider
merci
A voir également: