Warning: Invalid argument supplied for foreach() in /home/e1rsbco/public_html/hafriz/wp-content/plugins/facebook-import-comments/classes/FacebookCommentImporter.php on line 185
Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

N-Queen

Have trying all nite to use recuirsive to do the 8 queen.

walaupun aku dah siap dengan yang tanpa recursive. saja jer nak cube ingat balik recuirsive yang belajar sem lepas. ini yang aku dapat

import java.util.Scanner;

public class myqueen {
public static int solution = 0;

public static void main(String args[]){

int[] myqueen = new int[8];
int[][] board = new int[8][8];
//int i;

Queen(0,myqueen);
}

public static void Queen(int k,int[] myqueen){

int n = 8;

//k adalah untuk bilangan nilai queen dan bertindak sebagai barisan
// dan myqueen sebagai array adalah tempat dimana queen tu disimpan @ lajur ke berapa
Scanner input = new Scanner(System.in);
int i,j;

for(i=0;i<myqueen.length;i++){

if(checktest(k,i, myqueen)){ // boleh tak queen di letakkan dalam barisan k dan lajur i?
myqueen[k]=i;// kalau bleh set colum tersebut kedalam nilai array

if(k==7){//controller untuk recursive. kalau semua queen dah ada atas board baru masuk gelong

PrintQueen(myqueen); // papar generasi ke i(satu-satu)
System.out.println(“Tengok Lagi? [1->Berhenti, Nombor lain->Teruskan] : “); // controler untuk gelung
int mykak = input.nextInt();
//kalau mykak 1 maka keluar dari gelong
if(mykak==1)
System.exit(0);
solution++;
System.out.println(“”+solution);//bilangan solution untuk nxn
}
if(k<7)// kalau queen ada lagi.. teruskan loop. gune recursive panggil balik myqueen untuk update
//System.out.println(“here”);

Queen(k+1,myqueen);
}
}

}

public static boolean check(int k,int i,int[] x){

int j;
for(j=0;j<k;j++){
if((Math.abs(j-k)==Math.abs(x[j]-i))||(x[j]==i))//cara chek kotak kosong atau ada q dok..
return false;
}
return true;

}
public static boolean checktest(int k, int i, int[] x){

//int i,j;
//boolean[][] board = new boolean[8][8];
//for(i=0;i<x.length;i++)
// for(i=0;i<x.length;i++){
// for(j=0;j<8;j++){
// if(j==myqueen[i])
// board[j][i]=true;
// }
//}

//for (int ni=i-1;ni<=i+1;++ni)
// for (int nj=j-1;nj<=j+1;++nj)
//if (ni>=0&?<10&&nj>=0&&nj<10&&(ni!=i||nj!=j)

int j;
for(j=0;j<k;j++){
if((x[j]==i)|| (x[j] + j == k + i) || (x[j] – j == i – k))//cara chek kotak kosong atau ada q dok..
return false;
}
return true;

}
public static void PrintQueen(int[] myqueen){

int i,j;

System.out.println(” ——————————————————-”);
System.out.println(” “);
System.out.println(” 1 2 3 4 5 6 7 8″);
System.out.println(” —————————————-”);
for(i=0;i<myqueen.length;i++)
//System.out.printf(” %d”,(i+1));
//System.out.println(“”);
for(i=0;i<myqueen.length;i++){
System.out.printf(“%d “,(i+1));
System.out.print(“|”);
for(j=0;j<8;j++){
if(j==myqueen[i])
System.out.print(” Q |”);
else
System.out.print(” |”);
System.out.print(” “);

}
System.out.println(“”);
System.out.println(” —————————————-”);
}

//System.out.println(” ————————————————-”);
}

}

Related posts:

  1. Java Running / Execution Time
  2. sending mail using jsp
  3. string kepada format date
  4. TMK3109
  5. 8-queen

Leave a comment  

name*

email*

website

Submit comment