<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      得之我幸cyz

      試題 基礎練習 2n皇后問題

      試題 基礎練習 2n皇后問題

      資源限制

      時間限制:1.0s 內存限制:512.0MB

      問題描述

        給定一個n*n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行、同一列或同一條對角線上,任意的兩個白皇后都不在同一行、同一列或同一條對角線上。問總共有多少種放法?n小于等于8。

      輸入格式

        輸入的第一行為一個整數n,表示棋盤的大小。   接下來n行,每行n個0或1的整數,如果一個整數為1,表示對應的位置可以放皇后,如果一個整數為0,表示對應的位置不可以放皇后。 輸出格式   輸出一個整數,表示總共有多少種放法。

      樣例輸入

      4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

      樣例輸出

      2

      樣例輸入

      4 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

      樣例輸出

      0

      import java.util.Scanner;
      ?
      ?
      public class 二N皇后問題 {
      ?
      static int map[][];//存儲地圖
      static int ans=0;//計算方法
      static int n;//地圖的大小

      public static boolean judge(int cur,int i,int color){
      for(int j=cur-1;j>=0;j--){//判斷同一列是否有相同顏色的皇后
      if(map[j][i]==color){
      return false;
      }
      }
      for(int j=cur-1,z=i-1;j>=0&&z>=0;j--,z--){//判斷對角線左側是否有相同顏色的皇后
      if(map[j][z]==color){
      return false;
      }
      }
      for(int j=cur-1,z=i+1;j>=0&&z<n;j--,z++){//判斷對角線右側是否有相同顏色的皇后
      if(map[j][z]==color){
      return false;
      }
      }
      return true;
      }

      public static void dfs(int cur,int color){
      if(cur==n){//代表黑色放完了
      if(color==2){
      dfs(0,3);
      }
      else{
      ans++;
      }
      return ;
      }
      for(int i=0;i<n;i++){
      if(map[cur][i]==1&&judge(cur,i,color)){
      map[cur][i]=color;
      dfs(cur+1,color);
      map[cur][i]=1;//狀態恢復
      }
      }
      return;
      }

      public static void main(String[] args) {
      // TODO Auto-generated method stub
      Scanner sc=new Scanner(System.in);
      n=sc.nextInt();
      map=new int[n][n];
      for(int i=0;i<n;i++){
      for(int j=0;j<n;j++){
      map[i][j]=sc.nextInt();
      }
      }
      dfs(0,2);//2為黑色,3為白色
      System.out.println(ans);
      }
      /*
      4
      1 1 1 1
      1 1 1 1
      1 1 1 1
      1 1 1 1
      */
      ?
      }
      ?

      總結

      1.n皇后問題主要就是回溯和遞歸的思想。

      2.要注意初始化的問題

      map=new int[n][n];
      //這里要現在最前面聲明靜態變量static int map[][];
      //然后再main函數里對他進行初始化,不能寫成map[][]=new int[n][n];

      還有這里

      static int ans=0;//計算方法

      ans要在最前面初始化為0.

      3.然后就是要把狀態恢復了,差不多就是這樣

      posted on 2020-03-30 20:43  生如夏花,死如秋葉  閱讀(240)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 在线观看中文字幕码国产| 国产精品免费AⅤ片在线观看 | 亚洲国产高清第一第二区| 日韩乱码人妻无码中文字幕| 国产成人午夜精品永久免费| 久久久久人妻精品一区三寸| 少妇宾馆粉嫩10p| 丝袜人妻一区二区三区网站| 粉嫩蜜臀av一区二区绯色| 正阳县| 色五开心五月五月深深爱| 99久久99这里只有免费费精品| 久久人妻精品国产| 美女一级毛片无遮挡内谢| 国产中文字幕在线一区| 国产精品二区中文字幕| 蛟河市| 亚洲天天堂天堂激情性色| 亚洲国产精品一区二区久久| 日韩熟妇| 三上悠亚精品一区二区久久| 激情动态图亚洲区域激情| 亚洲免费成人av一区| 丁香五月亚洲综合在线国内自拍| 色综合久久精品亚洲国产| 年轻女教师hd中字3| 这里只有精品免费视频| 国产精品国语对白露脸在线播放| 久久青青草原国产精品最新片 | 亚洲精品无码久久毛片| 又爽又黄无遮挡高潮视频网站| 口爆少妇在线视频免费观看| 好爽毛片一区二区三区四| 午夜通通国产精品福利| 国产午夜精品福利免费不| 久久精品国产99久久无毒不卡| 国产人妻人伦精品婷婷| 精品国产精品三级精品av网址| 国产视频精品一区 日本| 日韩丝袜欧美人妻制服| 亚洲AV无码乱码在线观看性色扶 |