91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 238KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發(fā)布日期: 2021-07-07
  • 語言: C/C++
  • 標(biāo)簽: 八皇后??回溯算法??

資源簡介

一個用三種方法解決N皇后問題并且效率很高的c語言程序。 用到了前向檢查的回溯法 、基本回溯算法、面向沖突的回跳法等三種方法解決問題。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?

#ifndef?N_QUEEN_H
#define?N_QUEEN_H

#include?

#define?MAX_VARS?128
#define?FAIL?-1
#define?NONE?-1

int?num_vars;
int*?assignment;
int?algorithm_switch;

typedef?struct?_Var
{
int?index;?//?本變量的標(biāo)號
int?cur_value;?//?本變量的賦值
?
int?*domain;?//?本變量的值域
int?domain_index;?//?指向本變量能夠在值域中取出的下一個值

int?forwardcheck_depth;?//?當(dāng)此變量被賦值后,向前檢查的變量的數(shù)目

//?下面的兩個數(shù)據(jù)用于記錄當(dāng)前變量的值域被前面變量的賦值導(dǎo)致的排除情況
int?*domain_filter_count;
int?num_filtered_value;

//?記錄本變量的沖突集,若conflic_set[i]為true,則表示本變量與第i號變量存在沖突
bool?*conflict_set;

}?Var;

Var**?all_vars;??//?all?the?information?about?every?variable

//?初始化每個變量的信息
void?InitVarInfo()?{
int?var_index;
int?value_index;

assert(num_vars?>?0);

all_vars?=?(Var**)?calloc(num_vars?sizeof(Var*));
for(var_index?=?0;?var_index? all_vars[var_index]?=?(Var*)?calloc(1?sizeof(Var));

for(var_index?=?0;?var_index? {
all_vars[var_index]->index?=?var_index;
all_vars[var_index]->cur_value?=?NONE;


all_vars[var_index]->domain?=?(int*)?calloc(num_vars?sizeof(int));
for(value_index?=?0;?value_index? {
all_vars[var_index]->domain[value_index]?=?value_index;
}
all_vars[var_index]->domain_index?=?0;

all_vars[var_index]->forwardcheck_depth?=?0;

all_vars[var_index]->domain_filter_count?=?(int*)?calloc(num_vars?sizeof(int));
for(value_index?=?0;?value_index? {
all_vars[var_index]->domain_filter_count[value_index]?=?0;
}
all_vars[var_index]->num_filtered_value?=?0;

all_vars[var_index]->conflict_set?=?(bool*)?calloc(num_vars?sizeof(bool));
for(value_index?=?0;?value_index? {
(all_vars[var_index]->conflict_set)[value_index]?=?false;
}
}

//?dump?the?information?of?var?for?debug
/*
for(var_index?=?0;?var_index? {
printf(“Information?of?var%d?\n“?var_index);
printf(“Index:?%d\n“?all_vars[var_index]->index);
printf(“Current?value:?%d\n“?all_vars[var_index]->cur_value);

//?TODO:?dump?other?infomation
}
*/
}

//?將標(biāo)號為var_index的變量的取值位置設(shè)置為該變量domain的初始位置
void?ResetDomainIndex(int?var_index)
{
all_vars[var_index]->domain_index?=?0;

}

//?取出標(biāo)號為var_index的變量的值域中的一個值,如果該值域中的所有值均被嘗試過
//?則返回fail,表示失敗
int?NextValue(int?var_index)
{
int?value;
int?&value_index?=?all_vars[var_index]->domain_index;

if(value_index?>=?num_vars)
return?FAIL;

for(;?value_index? {
if(all_vars[var_index]->domain_filter_count[value_index]?==?0)
{
value?=?all_vars[var_index]->domain[value_index];
break;
}
}

if(value_index?>=?num_vars)
return?FAIL;
else?{
value_index++;
return?value;
}
}

//?根據(jù)var_index分析出需要回溯到的變量的標(biāo)號
int?BacktrackTo(int?var_index)
{
return?var_index?-?1;
}

//?判斷當(dāng)前的assignment中對標(biāo)號為0?...?var_i

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????12949??2012-01-08?17:48??testqueen\111.cpp

?????文件??????29440??2012-01-08?17:48??testqueen\Debug\111.obj

?????文件???????3732??2012-01-08?17:48??testqueen\Debug\BuildLog.htm

?????文件?????????67??2012-01-08?17:48??testqueen\Debug\mt.dep

?????文件??????36864??2012-01-08?17:48??testqueen\Debug\testqueen.exe

?????文件????????663??2012-01-01?22:39??testqueen\Debug\testqueen.exe.embed.manifest

?????文件????????728??2012-01-01?22:39??testqueen\Debug\testqueen.exe.embed.manifest.res

?????文件????????621??2012-01-08?17:48??testqueen\Debug\testqueen.exe.intermediate.manifest

?????文件?????408180??2012-01-08?17:48??testqueen\Debug\testqueen.ilk

?????文件?????429056??2012-01-08?17:48??testqueen\Debug\testqueen.pdb

?????文件??????52224??2012-01-08?17:48??testqueen\Debug\vc90.idb

?????文件??????69632??2012-01-08?17:48??testqueen\Debug\vc90.pdb

?????文件?????592896??2012-01-16?11:41??testqueen\testqueen.ncb

?????文件????????883??2012-01-01?22:30??testqueen\testqueen.sln

????..A..H.??????8704??2012-01-16?11:41??testqueen\testqueen.suo

?????文件???????3919??2012-01-01?22:35??testqueen\testqueen.vcproj

?????文件???????1427??2012-01-16?11:41??testqueen\testqueen.vcproj.SKY-20111108IPY.Administrator.user

?????目錄??????????0??2012-01-08?17:48??testqueen\Debug

?????目錄??????????0??2012-01-08?17:48??testqueen

-----------?---------??----------?-----??----

??????????????1651985????????????????????19


評論

共有 條評論