《c和指標》 練習題8.8
**參考至:
問題描述
皇后是西洋棋中威力最大的棋子。在下面所示的棋盤上,皇后可以攻擊位於箭頭所覆蓋位置的所有棋子。我們能不能把n個皇后放在棋盤(n×n)上,它們中的任何乙個都無法攻擊其餘的皇后?請編寫程式輸出皇后的擺放方案,並找出一共有幾種方法。
char board[n+2][n+2]; //乙個8*8的棋盤,最外圍位置用'#'填充
int count = 0; //用於統計有多少種放置策略
struct pos
;//初始化乙個結構體陣列pos,用於檢查'皇后之間'的相對位置是否合理
struct pos pos[3] = , //左上偏移
, //向上偏移
//右上偏移
};//初始化棋盤
void init(void)
}for ( i = 1; i <= n; i++)
}}//顯示棋盤(列印陣列)
void show(void)
printf("\n");
}}//檢查這個位置放置皇后,是否與其他(已放置的)皇后相互排斥
//輸入: row行小下標 col列下標
//返回: 1合理 0不合理
int check(int row, int col)
nr = nr + pos[i].yos; //偏移下標
nc = nc + pos[i].xos;}}
return ret;
}//採用回溯法,通過遞迴的手段,找出每一種策略。
//輸入: row開始位置的行標
//處理: 將'皇后'們放置結果安排在陣列,統計策略總數。
//輸出: 列印輸出(陣列)每一種策略
void find(int row)
else}}
}int main()
展示
搜尋練習題(1)八皇后
檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 4 6 1...
搜尋入門練習題5 八皇后問題 題解
題目描述 輸出格式 輸出乙個整數,用於表示八皇后問題的放置方案。題目分析 首先我們用 x,y 來表示棋盤上第 x 行第 y 列的格仔的座標。那麼,兩個皇后 x 1,y 1 和 x 2,y 2 會互相攻擊當且僅當滿足如下條件之一 我們可以用深度優先搜尋來解決這道題。我們可以發現的是,要想在 8 tim...
C語言練習題
8 編寫乙個程式,將字串str2中的全部字元複製到字串str1中。要求 不能使用strcpy函式。12分 include definemaxlen 20 假設 str2 的長度不超過 str1 的長度 voidstrcopy char str1,char str2 intmain 9 3 20分 從...