Aynı şekilde çözülmüş başka bir örnek. Resimli olarak gösterilmiş.
Åžartımız aynı satır ve sütuna aynı sayı gelmeyecek ÅŸekilde 0,1,2,3,4,5,6,7,8 sayılarını 3×3 lük matriste kaç farklı ÅŸekilde sıralarız?
İlk ve son durum çiktilari:

package ethemsulan.com; import java.util.ArrayList; public class Puzzle { static int[] dizi=new int[9]; static ArrayList kontrol = new ArrayList(); //Durumlar cok fazla(362880 durum) oldugundan hepsini consoleden goremiyoruz.Ilk 5 durumu gostermek<br /> //icin if(ilkBesDurum==5) tek, satirin yorumunu kaldiriniz<br /> static int ilkBesDurumuGoster=0; static int sayac=0; public void durumBul(int kutu){ //if(ilkBesDurumuGoster==5){ System.exit(0);} if(kutu==9){ //Kutu 9 oldugunda yani aranan sartlar dizi dolmussa (mesela 0 1 2 3 4 5 6 7 <img src="http://www.ethemsulan.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley"> durum olarak ekrana yaziyor ve sayac artiyor sayac++; ilkBesDurumuGoster++; System.out.print(sayac+" .durumn"); int uc=0; String str =null; for(int i=0;i<9;i++) { System.out.print(dizi[i]); str += dizi[i]; uc++; if(uc==3){ System.out.println(); uc=0; } } //Bulunan durum oncekilerle karsilastiriliyor.Eger ayni durum varsa System.exit(0);ile programi durduruyor<br /><br /> //Ayni durum yoksa else kisminda var olan durumlara ekliyor ki sonra gelenler ile karsilastirilsin.<br /><br /> if( kontrol.contains(str) ){ System.out.println(str + "daha onceden varmis"); System.exit(0); } else { kontrol.add(str); } System.out.println(); return; } //Bu sayi dizi de kullanildi mi? Cunku bizim sartimiz bir sayi ayni satir ve sutunda 2 sefer kullanilamaz.<br /><br /> for(int i=0;i<9;i++){ if(dahaOnceKullanildiMi(i)==false){ continue; } //Test aradigimiz sart saglaniliyor mu? else if(test(kutu,i)){ dizi[kutu]=i; durumBul(kutu+1); dizi[kutu]=-1; } } } public boolean dahaOnceKullanildiMi(int sayi){ for(int j=0;j<dizi.length;j++){ if(dizi[j]==sayi){ return false; } } return true; } public boolean test(int kutu, int b){ //Ornegin ilk calistiginda ve 0 gelince dizi bos oldugundan (dizi[0]==-1) ilk gelen elamani ekle yani true donder. if(dizi[kutu]==-1){ return true; } //Bunlar link verilen benzer ornekte resimli olarak gosterilmistir.Cunku bu sartlarin anlasilmasi lazim. if(kutu==0 &&(b==4 | b==5 | b==7 | b==8)){ return true; }else if(kutu==1 && (b==3 | b==5 | b==6 | b==8)){ return true; }else if(kutu==2 &&(b==3 | b==4 | b==6 | b==7)){ return true; }else if(kutu==3 &&(b==1 | b==2 | b==7 | b==8)){ return true; }else if(kutu==4 &&(b==0 | b==2 | b==6 | b==8)){ return true; }else if(kutu==5 &&(b==0 | b==1 | b==6 | b==7)){ return true; }else if(kutu==6 &&(b==1 | b==2 | b==4 | b==5)){ return true; }else if(kutu==7 &&(b==0 | b==2 | b==3 | b==5)){ return true; }else if(kutu==8 &&(b==0 | b==1 | b==3 | b==4)){ return true; } return false; } public static void main(String[] args) { Puzzle nesnem=new Puzzle(); for(int i=0;i<9;i++){ dizi[i]=-1; } nesnem.durumBul(0); } }

[...] Sayılarla yapılmış örneğe bakmak için tıklayın.Ikisinde de aynı mantık var [...]