2011年3月18日

<Java> JVA104-河洛之數



(1) 矩陣內數字皆不可重複出現
(2) 程式每次執行,矩陣數字排列皆不相同
(3) 矩陣之縱向、橫向、對角線數字總和皆為15

================================
這題的解法像在暴力破解...
如果寫演算法出來,需要時間可能很多。
總之能解出來就好
(執行一次 大概do迴圈會跑個3000~300000次)

public class JVA104 {
  public static void main(String[] args) {
   int a[]={0,1,2,3,4,5,6,7,8,9};
   boolean check=false;
   int i,j,c1,c2,c3,r1,r2,r3,x1,x2;
   do{
      for( i=1 ; i<a.length ; i++){
         j=(int)(Math.random()*9)+1;
         a[0] = a[i];
         a[i] = a[j];
         a[j] = a[0];
      }

      c1=a[1]+a[2]+a[3];
      c2=a[4]+a[5]+a[6];
      c3=a[7]+a[8]+a[9];
      r1=a[1]+a[4]+a[7];
      r2=a[2]+a[5]+a[8];
      r3=a[3]+a[6]+a[9];
      x1=a[1]+a[5]+a[9];
      x2=a[3]+a[5]+a[7];
      if( c1==15 && c2==15 && c3==15 && r1==15 && r2==15 && r3==15
         && x1==15 && x2==15){
         check=true;
      }
   }while(check==false);
   System.out.println("答案為:");

      System.out.println(a[1] + " " + a[2] + " " + a[3] );
      System.out.println(a[4] + " " + a[5] + " " + a[6] );
      System.out.println(a[7] + " " + a[8] + " " + a[9] );

   System.out.println("不論橫向縱向及對角線加起來的和都是:15");
  }
}

沒有留言:

張貼留言