国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

八皇后問題

2019-11-08 02:22:15
字體:
來源:轉載
供稿:網友

       八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。1854年在柏林的象棋雜志上不同的作者發表了40種不同的解,后來有人用圖論的方法解出92種結果。

代碼如下:

#include <stdio.h>

#define N 8typedef struct _tag_Pos{	int ios;	int jos;} Pos;static char board[N+2][N+2];static Pos pos[] = { {-1,-1}, {-1,0}, {-1,1} };static int count = 0;void init(){	int i = 0;	int j = 0;	for( i=0; i<N+2; i++ )	{		board[0][i] = '#';		board[N+1][i] = '#';		board[i][0] = '#';		board[i][N+1] = '#';		}		for( i=1; i<=N; i++ )	{		for( j=1; j<=N; j++ )			board[i][j] = ' ';		}} void display(){	int i = 0;	int j = 0;	for( i=0; i<N+2; i++ )	{		for( j=0; j<N+2; j++ )			PRintf("%c",board[i][j]);			printf("/n");			}		}int check(int i,int j){	int ret = 1;	int p = 0;		for(p=0;p<3;p++)	{		int ni = i;		int nj = j;				while(ret && (board[ni][nj] != '#'))		{			ni = ni + pos[p].ios;			nj = nj + pos[p].jos;						ret = ret && (board[ni][nj] != '*');		}	}		return ret;}void find(int i){	int j=0;		if( i>N )	{		count++;		printf("Solution: %d/n", count);		display();		getchar();		}	else	{		for( j=1; j<=N; j++ )		{			if(check(i,j))			{				board[i][j] = '*';				find(i+1);				board[i][j] = ' ';				}			}		}}int main(){     init();    find(1);    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥中县| 九寨沟县| 商都县| 大英县| 佛坪县| 北安市| 海口市| 沛县| 乐陵市| 乌鲁木齐市| 竹山县| 温宿县| 武清区| 隆昌县| 龙游县| 河东区| 静宁县| 炎陵县| 锦州市| 大关县| 甘南县| 积石山| 宜宾县| 繁峙县| 福州市| 湖北省| 黑水县| 台中县| 奇台县| 邯郸县| 瓮安县| 沁阳市| 菏泽市| 江都市| 北川| 龙川县| 和田县| 突泉县| 松溪县| 周宁县| 阜新市|