国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三江| 读书| 广灵县| 读书| 华阴市| 固安县| 洛宁县| 东明县| 博白县| 巴东县| 平安县| 高台县| 巴林右旗| 鄂温| 兴山县| 佛坪县| 沅江市| 汽车| 赣榆县| 华宁县| 饶河县| 武宁县| 新乡县| 平南县| 武义县| 蒙阴县| 闽清县| 舟曲县| 阳江市| 鄂州市| 沛县| 澜沧| 囊谦县| 渑池县| 武功县| 呼伦贝尔市| 蒙山县| 金秀| 富顺县| 南通市| 英山县|