<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feng.Li's Java See

    抓緊時間,大步向前。
    隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
    數(shù)據(jù)加載中……

    人工智能八數(shù)碼算法

    public class BaShuMa {
    ?
    ?static int[][] chu = {{2,8,3},{1,6,4},{7,0,5}};
    ?static int[][] biao = {{1,2,3},{8,0,4},{7,6,5}};
    ?static int[][] now = chu;
    ?static int i0 =2;
    ?static int j0 =1;
    ??? static int bushu = 0;
    ???? boolean left = false;
    ??boolean right = false;
    ??boolean up = false;
    ??boolean down = false;
    ?
    ?

    ?
    ?static String lujing = "";
    ??????
    ?/*返回當(dāng)前數(shù)組的在位數(shù)*/
    ?public static int buzaiwei(int a[][]) {
    ??int sum = 0;
    ??for(int i=0;i<=2;i++) {
    ???for(int j=0;j<=2;j++) {
    ????if(a[i][j] == biao[i][j]&&a[i][j]!=0) {
    ?????sum++;
    ????}
    ????
    ????}
    ???}
    ???return sum;
    ??}
    ?/*判斷0所在的位置*/?
    ??public void i0j0weizhi(int[][] a) {
    ???int[] b = new int[2];
    ???for(int i=0;i<=2;i++) {
    ????for(int j=0;j<=2;j++) {
    ?????if(a[i][j]==0) {
    ??????i0 = i;
    ??????j0 = j;
    ??????b[0] = i0;
    ??????b[1] = j0;
    ??????
    ??????????????? }
    ????}
    ???}
    ???
    ??}
    ??
    ?/*以當(dāng)前數(shù)組的i0.j0為參數(shù),求出當(dāng)前的可用規(guī)則集,并用4個boolean值來防止逆操作*/
    ?public? String keyonggueizeji(int c,int d) {
    ??
    ??String keyonggueize = "";
    ??if(d>=1&&right==false) {
    ???keyonggueize = keyonggueize + "z";
    ???
    ??}
    ??if(c>=1&&down==false) {
    ???keyonggueize = keyonggueize + "s";
    ???
    ??}
    ??if(d<=1&&left==false) {
    ???keyonggueize = keyonggueize + "y";
    ???
    ??}
    ??if(c<=1&&up==false) {
    ???keyonggueize = keyonggueize + "x";
    ???
    ??}
    ??return keyonggueize;
    }?? /*走步函數(shù)*/
    ??? public void zoubu(int c,int d) {
    ????
    ?? int k1 = 0;
    ?? int k2 = 0;
    ?? int k3 = 0;
    ?? int k4 = 0;
    ?? int[][] b1={{2,8,3},{1,6,4},{7,0,5}};
    ?? int[][] b2={{2,8,3},{1,6,4},{7,0,5}};
    ?? int[][] b3={{2,8,3},{1,6,4},{7,0,5}};?
    ? int[][] b4={{2,8,3},{1,6,4},{7,0,5}};
    ? for(int i=0;i<=2;i++) {
    ? ?for(int j=0;j<=2;j++) {
    ? ??b1[i][j]=now[i][j];
    ? ?}
    ? }
    ? for(int i=0;i<=2;i++) {
    ? ?for(int j=0;j<=2;j++) {
    ? ??b2[i][j]=now[i][j];
    ? ?}
    ? }
    ? for(int i=0;i<=2;i++) {
    ? ?for(int j=0;j<=2;j++) {
    ? ??b3[i][j]=now[i][j];
    ? ?}
    ? }
    ? for(int i=0;i<=2;i++) {
    ? ?for(int j=0;j<=2;j++) {
    ? ??b4[i][j]=now[i][j];
    ? ?}
    ? }
    ?
    ? /*int[][] b1 = {{2,8,3},{1,6,4},{7,0,5}};
    ?? int[][] b2 = {{2,8,3},{1,6,4},{7,0,5}};
    ?? int[][] b3 = {{2,8,3},{1,6,4},{7,0,5}};?
    ? int[][] b4 = {{2,8,3},{1,6,4},{7,0,5}};*/
    ? i0j0weizhi(now);
    ? /*System.out.println(i0);
    ? System.out.println(j0);
    ? for(int a=0;a<=2;a++) {
    ??????????? ?for(int b=0;b<=2;b++) {
    ??????????? ??System.out.println(now[a][b]);
    ??????????? ?}
    ??????????? }*/

    ?
    ?
    ??/*判斷是否在字符串里有z*/
    ?
    ?if(keyonggueizeji(i0,j0).indexOf("z")!=-1) {
    ??
    ????
    ???
    ??
    ??b1[i0][j0] = b1[i0][j0-1];
    ??b1[i0][j0-1] = 0;
    ???? k1 = buzaiwei(b1);?
    ?
    }

    ?if(keyonggueizeji(i0,j0).indexOf("s")!=-1) {
    ??b2[i0][j0] = b2[i0-1][j0];
    ??b2[i0-1][j0] = 0;
    ??k2 =buzaiwei(b2);
    }
    ?
    ?if(keyonggueizeji(i0,j0).indexOf("y")!=-1) {
    ??b3[i0][j0] = b3[i0][j0+1];
    ??b3[i0][j0+1] = 0;
    ??k3 = buzaiwei(b3);
    }
    ?
    ?if(keyonggueizeji(i0,j0).indexOf("x")!=-1) {
    ??b4[i0][j0] = b4[i0+1][j0];
    ??b4[i0+1][j0] = 0;
    ???? k4 =buzaiwei(b4);
    }
    ??? if(k1>k2&&k1>k3&&k1>k4) {
    ??bushu++;
    ??lujing = lujing + "左";
    ??j0 = j0 -1;
    ??now = b1;
    ??left = true;
    ??up = false;
    ??down = false;
    ??right = false;
    ??/*for(int a=0;a<=2;a++) {
    ??????????? ?for(int b=0;b<=2;b++) {
    ??????????? ??System.out.println(now[a][b]);
    ??????????? ?}*/
    ??
    ?}

    ?if(k2>k1&&k2>k3&&k2>k4) {
    ??bushu++;
    ??lujing = lujing + "上";
    ??i0 = i0 - 1;
    ??now = b2;
    ??left = false;
    ??up = true;
    ??down = false;
    ??right = false;
    ?
    ?}
    ?if(k3>k1&&k3>k2&&k3>k4) {
    ??bushu++;
    ??lujing = lujing + "右";
    ??j0 = j0 +1;
    ??now = b3;
    ??left = false;
    ??up = false;
    ??down = false;
    ??right = true;
    ?
    ?}
    ?if(k4>k1&&k4>k2&&k4>k3) {
    ??bushu++;
    ??lujing = lujing + "下";
    ??i0 = i0 + 1;
    ??now = b4;
    ??left = false;
    ??up = false;
    ??down = true;
    ??right = false;
    ??
    ?}
    ?if(k1==k2&&k1>k3&&k1>k4) {
    ??bushu ++;
    ??lujing = lujing + "上";
    ???? i0 = i0 - 1;
    ??now = b2;
    ??left = false;
    ??up = true;
    ??down = false;
    ??right = false;
    ?
    ??
    ???

    ?}
    }

    ?

    ?


    ??? public static void main(String[] args) {
    ??????? BaShuMa bashuma = new BaShuMa();
    ??????? System.out.println("給定的初始狀態(tài)數(shù)組為:");
    ??? ?for(int i=0;i<=2;i++) {
    ??? ??
    ??? ???System.out.print(chu[0][i]);
    ??? ??
    ??? ?}
    ??? ?System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ????? System.out.print(chu[1][i]);
    ??? ??? }
    ??? ??? System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ??System.out.print(chu[2][i]);
    ??? ??}
    ??? ??System.out.println();
    ??????? System.out.println("***********************");
    ??? ???? ?System.out.println("給定的目標(biāo)狀態(tài)數(shù)組為:");
    ??? ?for(int i=0;i<=2;i++) {
    ??? ??
    ??? ???System.out.print(biao[0][i]);
    ??? ??
    ??? ?}
    ??? ?System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ????? System.out.print(biao[1][i]);
    ??? ??? }
    ??? ??? System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ??System.out.print(biao[2][i]);
    ??? ??}
    ??????? System.out.println();
    ??????? System.out.println("***********************");
    ??????? System.out.println("行走步驟為:");
    ??????? while(true)
    ??????? if(bashuma.buzaiwei(now)!=8) {
    ??????? ?bashuma.zoubu(i0,j0);
    ??????????? for(int i=0;i<=2;i++) {
    ??? ??
    ??? ???System.out.print(now[0][i]);
    ??? ??
    ??? ?}
    ??? ?System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ????? System.out.print(now[1][i]);
    ??? ??? }
    ??? ??? System.out.println();
    ??? ?for(int i=0;i<=2;i++) {
    ??? ??System.out.print(now[2][i]);
    ??? ??}
    ??? ?
    ??????? System.out.println();
    ??????? System.out.println("***********************");
    ??? }
    ??????? else {
    ??????? ?break;
    ??????? }
    ??? System.out.println("走步的路線為:"+lujing);
    ??? System.out.println("需要的步數(shù)為:"+bushu);?
    ??????? //bashuma.zoubu(i0,j0);
    ??????? //System.out.println(bashuma.alldepth(chu));
    ???????
    ??? }
    }

    posted on 2006-12-14 18:00 小鋒 閱讀(1921) 評論(1)  編輯  收藏 所屬分類: algorithm

    評論

    # re: 人工智能八數(shù)碼算法[未登錄]  回復(fù)  更多評論   

    博主 我想求一個八數(shù)碼游戲的原代碼
    要求如下:
    8個編有數(shù)碼1~8的滑牌,能在3×3的井字格中滑動。井字格中有一格是空格,用0表示,因而空格周圍的數(shù)碼滑牌都可能滑到空格中去,如下圖所示。
    2 8 3
    1 6 4
    7 0 5

    目標(biāo)布局如下:
    1 2 3
    4 5 6
    7 8 0

    編制該游戲,要求:
    ? 游戲開始時,隨機產(chǎn)生一個布局。
    ? 使用鼠標(biāo)操縱方格的移動。
    ? 也可以使用鍵盤操縱,比如使用數(shù)字鍵1~8分別控制方塊1~8的移動。
    ? 點擊不能移動的方格要給出適當(dāng)?shù)奶崾尽?
    是個初學(xué)者,完全菜鳥級。這個程序急需,希望博主看到后,施個援手吧
    2008-01-08 11:01 | 菜鳥
    主站蜘蛛池模板: 西西人体大胆免费视频| 久久精品国产亚洲AV无码娇色| 亚洲国产激情在线一区| 中国xxxxx高清免费看视频| 亚洲高清在线视频| 久久久精品免费视频| 亚洲爆乳无码一区二区三区| 国产亚洲免费的视频看| 久久青青成人亚洲精品| 91精品国产免费久久国语麻豆| 久久精品国产亚洲av高清漫画| 99国产精品免费观看视频| 亚洲欧洲精品视频在线观看| 成年人免费的视频| 亚洲欧洲日产国码久在线| 国产精品深夜福利免费观看| 青草青草视频2免费观看| 亚洲综合另类小说色区色噜噜| av网站免费线看| 久久亚洲精品国产精品黑人| 91av在线免费视频| 亚洲国产精品久久久久秋霞小| 国产一级高清视频免费看| 久久er国产精品免费观看8| 亚洲资源在线观看| 男男AV纯肉无码免费播放无码| 狠狠入ady亚洲精品| 国产午夜亚洲精品理论片不卡| 毛片无码免费无码播放| 亚洲色最新高清av网站| 国产日产亚洲系列| 1000部拍拍拍18勿入免费视频软件| 亚洲欧美日韩国产精品一区| 国产精品亚洲mnbav网站| 亚洲啪啪免费视频| 特级毛片全部免费播放| 内射干少妇亚洲69XXX| 国产男女性潮高清免费网站| 在线观看肉片AV网站免费| 亚洲卡一卡二卡乱码新区| 亚洲综合网站色欲色欲|