專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

試著用回溯法解,推理題,八皇后問題,解數(shù)獨(dú)因?yàn)槭且活悊栴}就都寫一個(gè)類里了

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月23日   【字體:

#include stdio.h
class TuiLi //推理類
{
//私有方法部分
protected:

SYSTEMTIME TIME; //標(biāo)準(zhǔn)系統(tǒng)時(shí)間存放結(jié)構(gòu)體共8個(gè)成員16字節(jié)

struct FZ
{
int ys;
int yp;
int gj;
int cw;
int yl;
};//房子屬性結(jié)構(gòu)體

FZ Fz[5];//定義5間房子
int Biao[120][5];//定義組合表
int gj,ys,yl,cw,yp;//組合標(biāo)志
int sz[25];

//解數(shù)獨(dú)用
int sudu[81]; //記錄回溯路徑用
bool sudu_ji[81]; //用于標(biāo)記已經(jīng)被題目標(biāo)示出來的值
int SD[9][9]; //數(shù)獨(dú)棋盤

//解N皇后問題
int N;//用于輸入皇后問題的解題規(guī)模本例子因?yàn)閮?nèi)存分配只能解33皇后以類的問題更改內(nèi)存分配大小可以增大解題規(guī)模
int hh[1024]; //記錄回溯路徑用最多用于解33皇后問題
int HH[33][33];//皇后問題棋盤



//公共方法部分
public:
TuiLi(void);
~TuiLi(void);
void init_biao(void);//初始化組合表
void print(void);//屏幕輸出
void gx(void);//刷新推理結(jié)果
int OK(void);//推理剪枝條件
int go(void);//推理題主入口方法

int ok_sd(void);//數(shù)獨(dú)剪枝條件
int go_sd(void);//解數(shù)獨(dú)人口點(diǎn)
void sd_in(void);//棋盤數(shù)據(jù)輸入
void SD_in(void);//獲取題目信息
void sd_out(void);//棋盤數(shù)據(jù)輸出
void sd_print(void);//屏幕輸出結(jié)果

int ok_hh(int m);//皇后問題剪枝函數(shù)
int ok_hh_sc(void);//最后檢測(cè)
int go_hh(void); //皇后問題入口點(diǎn)
void hh_init(void);//初始化棋盤數(shù)據(jù)
void hh_out(void);//棋盤數(shù)據(jù)刷新
void hh_print(void);//輸出結(jié)果

};

關(guān)閉窗口

相關(guān)文章