利用棧操作實現八皇后問題求解

2021-10-11 10:57:52 字數 1473 閱讀 3928

-資料結構題目

c++**如下:

#include

#include

using

namespace std;

#define stackinitsize 256

//初次分配空間大小

#define stackincrement 128

//空間分配增量大小

int resultcount=0;

typedef

struct

point;

typedef

struct seqstack

seqstack;

void

initstack

( seqstack &s )

//initstack

void

push

( seqstack &s, point e )

s.ptop = s.pbase + s.stacksize;

//重新計算棧頂指標位置

s.stacksize +

= stackincrement;

} s.ptop-

>col = e.col;

//插入元素e作為新的棧頂元素

s.ptop-

>row = e.row;

s.ptop ++

;//更新棧頂位置

}//push

point pop

( seqstack &s, point &e )

e.col = s.ptop-

>col;

//將棧頂元素值賦給e

e.row = s.ptop-

>row;

s.ptop --

;//棧頂指標指向新的棧頂位置

return e;

//返回舊值

}//pop

bool

judgequeenconfliction

( point &newqueen, seqstack &stkqueen )

pcurqueen ++;}

return0;

}//judgequeenconfliction

void

outputresult

( seqstack &s )

} cout<}//outputresult

intplacequeen

( seqstack &stkqueen, point &curqueen,

int row )

else

if( row ==7)

//完成全部皇后的放置

}pop

(stkqueen, curqueen);}

return0;

//返回最終解的個數

}//placequeen

intmain()

八皇后問題 遞迴求解

八皇后問題簡述 在西洋棋中,皇后是最厲害的 這也就是大概為什麼不要得罪女人的原因 她可以吃掉任意與其所在列和行,以及對角線上的棋子。所以在8x8的棋盤上,安放8個皇后,使得不會相互攻擊,也就是安全的就變得極為重要。本文採用遞迴的方式,輸出所有的92種可能的方法。如下 include stdafx.h...

八皇后問題 遞迴求解

在西洋棋的棋盤上,按照西洋棋的規則,擺放8個皇后,使之 和平共處 如圖所示,在3 d上有乙個皇后,則綠色區域中都不能再放置皇后了。最暴力的方法就是使用八個for,但是很明顯,這種方法效率太低。對於放置了皇后的位置,仔細觀察棋盤可以發現每一列 行 只能有乙個皇后,每乙個主 次 對角線上也只能有乙個皇后...

遞迴求解八皇后問題

題目 八皇后問題 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法 遞迴思路 在第1行安全位置放乙個棋子,在第2行安全位置放乙個棋子,以此類推,直到八行都放了棋子,第9行時退出遞迴過程。c 八皇后問題 在8 8格的西洋棋上擺放八個...