亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++回溯法實例分析

2020-05-23 14:21:41
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C++回溯法,實例講述了回溯法的原理與實現(xiàn)方法,最后給出了回溯法解決八皇后的實例,需要的朋友可以參考下
本文實例講述了C++的回溯法,分享給大家供大家參考之用。具體方法分析如下:
一般來說,回溯法是一種枚舉狀態(tài)空間中所有可能狀態(tài)的系統(tǒng)方法,它是一個一般性的算法框架。
解向量a=(a1, a2, ..., an),其中每個元素ai取自一個有限序列集Si,這樣的解向量可以表示一個排列,其中ai是排列中的第i個元素,也可以表示子集S,其中ai為真當(dāng)且僅當(dāng)全集中的第i個元素在S中;甚至可以表示游戲的行動序列或者圖中的路徑。
在回溯法的每一步,我們從一個給定的部分解a={a1, a2, ..., ak}開始,嘗試在最后添加元素來擴(kuò)展這個部分解,擴(kuò)展之后,我們必須測試它是否為一個完整解,如果是的話,就輸出這個解;如果不完整,我們必須檢查這個部分解是否仍有可能擴(kuò)展成完整解,如果有可能,遞歸下去;如果沒可能,從a中刪除新加入的最后一個元素,然后嘗試該位置上的其他可能性。
用一個全局變量來控制回溯是否完成,這個變量設(shè)為finished,那么回溯框架如下,可謂是回溯大法之精髓與神器

#include <iostream>

using namespace std;

char str[] = "abc";
const int size = 3;

int constructCandidate(bool *flag, int size = 2)
{
flag[0] = true;
flag[1] = false;

return 2;
}

void printCombine(const char *str, bool *flag, int pos, int size)
{
if (str == NULL || flag == NULL || size <= 0)
return;
 
if (pos == size)
{
cout << "{ ";
for (int i = 0; i < size; i++)
{
  if (flag[i] == true)
  cout << str[i] << " ";
}
cout << "}" << endl;
}
else
{
bool candidates[2];
int number = constructCandidate(candidates);
for (int j = 0; j < number; j++)
{
  flag[pos] = candidates[j];
  printCombine(str, flag, pos + 1, size);
}
}
}

void main()
{
bool *flag = new bool[size];
if (flag == NULL)
return;
printCombine(str, flag, 0, size);
delete []flag;
}
采用回溯法框架來計算字典序排列:

#include <iostream>

using namespace std;

char str[] = "abc";
const int size = 3;

void constructCandidate(char *input, int inputSize, int index, char *states, char *candidates, int *ncandidates)
{
if (input == NULL || inputSize <= 0 || index < 0 || candidates == NULL || ncandidates == NULL)
return;
 
bool buff[256];
for (int i = 0; i < 256; i++)
buff[i] = false;
int count = 0;
for (int i = 0; i < index; i++)
{
buff[states[i]] = true;
}
for (int i = 0; i < inputSize; i++)
{
if (buff[input[i]] == false)
  candidates[count++] = input[i];
}
*ncandidates = count;
return;
}

bool isSolution(int index, int inputSize)
{
if (index == inputSize)
return true;
else
return false;
}

void processSolution(char *input, int inputSize)
{
if (input == NULL || inputSize <= 0)
return;

for (int i = 0; i < inputSize; i++)
cout << input[i];
cout << endl;
}

void backTack(char *input, int inputSize, int index, char *states, int stateSize)
{
if (input == NULL || inputSize <= 0 || index < 0 || states == NULL || stateSize <= 0)
return;
 
char candidates[100];
int ncandidates;
if (isSolution(index, inputSize) == true)
{
processSolution(states, inputSize);
return;
}
else
{
constructCandidate(input, inputSize, index, states, candidates, &ncandidates);
for (int i = 0; i < ncandidates; i++)
{
  states[index] = candidates[i];
  backTack(input, inputSize, index + 1, states, stateSize);
}
}
}

void main()
{
char *candidates = new char[size];
if (candidates == NULL)
return;
backTack(str, size, 0, candidates, size);
delete []candidates;
}
對比上述兩種情形,可以發(fā)現(xiàn)唯一的區(qū)別在于全排列對當(dāng)前解向量沒有要求,而字典序?qū)Ξ?dāng)前解向量是有要求的,需要知道當(dāng)前解的狀態(tài)!
八皇后回溯法求解:

#include <iostream>

using namespace std;

int position[8];

void constructCandidate(int *input, int inputSize, int index, int *states, int *candidates, int *ncandidates)
{
if (input == NULL || inputSize <= 0 || index < 0 || candidates == NULL || ncandidates == NULL)
return;
 
*ncandidates = 0;
bool flag;
for (int i = 0; i < inputSize; i++)
{
flag = true;
for (int j = 0; j < index; j++)
{
  if (abs(index - j) == abs(i - states[j]))
  flag = false;
  if (i == states[j])
  flag = false;
}

if (flag == true)
{
  candidates[*ncandidates] = i;
  *ncandidates = *ncandidates + 1;
}
}
/*
cout << "ncandidates = " << *ncandidates << endl;
system("pause");*/

return;
}

bool isSolution(int index, int inputSize)
{
if (index == inputSize)
return true;
else
return false;
}

void processSolution(int &count)
{
count++;
}

void backTack(int *input, int inputSize, int index, int *states, int stateSize, int &count)
{
if (input == NULL || inputSize <= 0 || index < 0 || states == NULL || stateSize <= 0)
return;
 
int candidates[8];
int ncandidates;
if (isSolution(index, inputSize) == true)
{
processSolution(count);
}
else
{
constructCandidate(input, inputSize, index, states, candidates, &ncandidates);
for (int i = 0; i < ncandidates; i++)
{
  states[index] = candidates[i];
  backTack(input, inputSize, index + 1, states, stateSize, count);
}
}
}

void main()
{
//初始化棋局
for (int i = 0; i < 8; i++)
position[i] = i;

int states[8];
int count = 0;
backTack(position, 8, 0, states, 8, count);
cout << "count = " << count << endl;
}
希望本文所述對大家C++程序算法設(shè)計的學(xué)習(xí)有所幫助。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
色帝国亚洲欧美在线| 欧亚精品中文字幕| 亚洲视频国产视频| 免费观影入口看日本视频| 欧美一区二区三区在线观看免费| 日韩女优人人人人射在线视频| 国产精品久久久久久久久久久久午夜片| 一个人看的日本www的免费视频| 97精品国产99久久久久久免费| 香蕉视频成人在线| 亚洲色图100p| 黄色免费观看| 亚洲美女视频在线免费观看| 国产美女激情视频| 粉嫩av一区二区三区| 一级黄色免费在线观看| 日韩和欧美的一区| 波多野结衣一本一道| 中文字幕有码热在线视频| 草草久视频在线观看电影资源| 肉色超薄丝袜脚交69xx图片| 亚洲精品电影网在线观看| 99re热久久这里只有精品34| 成人毛片视频免费看| 欧美成人在线免费| 在线播放色视频| 国产精品久久精品牛牛影视| 爽爽免费视频| 亚洲婷婷综合久久一本伊一区| 欧美日韩精品二区第二页| 在线观看日韩av| 极品人妻videosss人妻| 露脸国产精品自产在线播| 在线播放evaelfie极品| 欧美日韩在线观看一区二区| 精品麻豆剧传媒av国产九九九| 成人精品在线观看| 国产剧情在线观看一区| 久久视频国产精品免费视频在线| 久久99国产精品二区高清软件| 一本色道69色精品综合久久| 中文字幕一区二区人妻在线不卡| 欧美影院在线| 日韩手机在线观看视频| 天堂av资源在线观看| 亚洲精品午夜国产va久久成人| 久久亚洲国产视频| 国产免费一区二区三区视频| 美国十次了思思久久精品导航| 久久久99精品| 欧美色视频一区| 91在线国产观看| 亚洲欧美日韩视频二区| 黑人与娇小精品av专区| 性感少妇一区| 一区二区三区四区在线观看视频| 精品国产综合| 亚洲经典三级| 中文字幕乱码视频| 欧美极品在线播放| 91精品国产自产在线丝袜啪| 一本大道香蕉久久| 日韩免费福利电影在线观看| 久热这里有精品| 日本精品一区二区三区高清| 久久影院在线观看| 国产精品午夜av| 国产精品成人av久久| 性欧美疯狂xxxxbbbb| ass极品国模人体欣赏| 91精品啪在线观看国产18| 国产精品视频yy9099| 国产亚洲aⅴaaaaaa毛片| 中文字幕人妻一区二区在线视频| 国产一区二区三区在线观看视频| av久久网站| 日产日韩在线亚洲欧美| 人人爽人人爽人人片av| 91好色先生tv| 精品视频在线观看日韩| 亚洲在线视频一区二区| 亚洲精品中文字幕无码蜜桃| 亚洲国产精彩中文乱码av| 美丽的姑娘在线观看免费动漫| 这里只有精品电影| 国产精品美女www| 久久久久久久久久久久久久| 免费a级毛片在线播放| 亚洲欧美成人一区| 精品亚洲一区二区三区四区| 日本在线天堂| 精品一级毛片| 国产精品老熟女视频一区二区| 日本成人a视频| 丰满的护士2在线观看高清| 国产精品日韩欧美一区| 尤物视频免费| 色美美综合视频| 亚洲91av| 韩国无码一区二区三区精品| chien国产乱露脸对白| 中文字幕久久一区| 国产亚洲精品久久久久婷婷瑜伽| 欧美日韩一二| a毛片在线观看| 99久久www免费| 小说区图片区图片区另类灬| 中文字幕在线观看日本| jizz性欧美| 在线观看视频你懂的| 亚洲图片欧美在线| 欧美老女人性视频| 国产亚洲一区二区三区不卡| 国产免费不卡| 国产成人精品免费一区二区| 久久高清免费视频| 中文一区一区三区免费在线观看| 欧美影院一区二区三区| 欧美福利精品| 国产精品女上位| 国产精自产拍久久久久久蜜| 免费看日本黄色片| 亚洲美女在线视频| 91.成人天堂一区| 最新日韩精品| 黄色工厂在线观看| 欧美高清视频一二三区| 日本人妻熟妇久久久久久| 欧美日韩在线视频观看| 国产乱码精品一区二三赶尸艳谈| 欧美日韩在线中文字幕| 久久99精品国产自在现线小黄鸭| 中文在线一区二区| 久久久久人妻一区精品色| 成人高清av在线| www.98色噜噜噜| 午夜高潮免费视频| 波多野结衣高清在线| 国产鲁鲁视频在线观看特色| 成人av中文| 精品国产乱码久久久久久夜甘婷婷| 国内在线免费高清视频| 成人高清一区| 男人天堂视频在线观看| 国产精品色哟哟网站| 日本韩国欧美精品大片卡二| 99re在线国产| 日本综合视频| 在线看片线路1| 深夜日韩欧美| 欧美一区二区三区人| a级黄色小视频| 99久久久无码国产精品性波多| 一个人看的免费视频色| 色哟哟一区二区在线观看| 欧美日韩久久不卡| 婷婷成人激情在线网| 色老板在线观看| 强迫凌虐淫辱の牝奴在线观看| xxxx18国产| caoporn成人| 亚洲一区免费看| 精精国产xxxx视频在线播放| 国产91av在线播放| 男人天堂亚洲二区| 日韩一区二区三区在线播放| 中文字幕999| 亚洲电影一级黄| 九九精品在线观看| 亚洲第一精品区| 91高清视频免费看| 国产精品一级在线观看| 亚洲一二三不卡| 风间由美性色一区二区三区四区| 久久国产手机看片| 亚洲国产欧美另类丝袜| 国产成人a亚洲精品| 亚洲高清在线免费| 亚洲最大激情中文字幕| 久久99久久久久| 精品盗摄女厕tp美女嘘嘘| 日本一区二区三区免费观看| 国产露脸无套对白在线播放| www夜片内射视频日韩精品成人| 国产精品99无码一区二区| 亚洲综合视频在线观看| 大伊香蕉精品在线品播放| 久久久精品日本| 成人午夜激情在线| 欧美少妇精品| 国产成人艳妇aa视频在线| 欧美大胆视频| 中文乱码免费一区二区| 91精品国产综合久久小美女| 五月天黄色网址| 狠狠爱综合网| 神马久久影视大全| 日韩在线观看不卡| 欧美日韩一区二区在线观看| 想看黄色一级片| 欧美精品激情| 久久久久久五月天久久久久久久久| 亚洲女人久久久| 久久天天久久| 成人h动漫精品| 99国产欧美另类久久久精品| 日批视频网站| 西西裸体人体做爰大胆久久久| 日韩专区一卡二卡| 蜜桃av在线播放| 亚洲色欲久久久综合网东京热| 日韩国产欧美在线观看| 亚洲开发第一视频在线播放| 中文字幕xxx| 欧美成人国产精品一区二区| 99热这里只有精品在线观看| 来个黄色网址| 日韩精品一区二区不卡| 久久精品一二三| 亚洲午夜精品久久久久久性色| 欧美xxxxxxxxx59| 国产高清精品软件丝瓜软件| 亚洲香蕉av| 中文字幕成人动漫| 4438x成人网全国最大| 欧美性生活影院| 色婷婷综合网站| a视频在线观看| 欧美另类黑人巨大videos| 成人99免费视频| 五月天婷亚洲天综合网精品偷| 一区二区视频免费完整版观看| aaa大片免费观看| 黑人与娇小精品av专区| 亚洲东热激情| 日日噜噜夜夜狠狠久久波多野| 亚洲欧美日韩国产综合精品二区| 全彩无遮拦全彩口工漫画全彩| 性欧美长视频免费观看不卡| 亚洲av毛片在线观看| 亚洲精品视频播放| 国内精品视频一区| 久久99国产综合精品免费| 一区二区三区四区视频免费观看| 成人午夜激情av| 国产精品综合不卡av| 美女精品一区最新中文字幕一区二区三区| 9191国语精品高清在线| 亚洲黄色免费av| 91亚洲国产精品| 天天射天天综合网| 亚洲一区二区三区色| 日韩极品在线观看| 色黄视频在线| 亚洲精品第1页| 少妇饥渴放荡91麻豆| 国内精品不卡| 午夜免费久久看| 欧美1级片网站| 国产a∨精品一区二区三区不卡| 国产九色在线播放九色| 久久国产精品久久久久久久久久| 国产精品传媒入口麻豆| 亚洲经典一区二区| 国产精品伦一区二区三区视频| 欧美成人精品高清在线播放| 激情六月综合| 国产精品人人人人| 成人精品天堂一区二区三区| 91在线中文字幕| www.操操操| 91久久精品久久国产性色也91| 午夜剧场日韩| 黄色国产在线播放| 国产精品69页| av电影天堂一区二区在线观看| 男人天堂成人网| 国产午夜精品久久久久免费视| 超碰免费公开在线| 国产又爽又黄免费视频| 成人3d动漫网站| 中文乱码字幕av网站| 国产成人精品视频免费| 亚洲欧美色图区| 国产麻豆精品一区二区| 欧美丝袜一区| 亚洲va欧美va国产综合剧情| 在线观看国产网站| japanese在线视频| 99视频热这里只有精品免费| 国产欧美精品一区二区色综合朱莉| 黄色一级大片在线观看| 日本高清在线观看视频| 无人区在线高清完整免费版 一区二| 国产高清免费观看| 国产91在线播放九色| 亚洲一区二区观看| 欧美猛男gaygay网站| 2022亚洲天堂| 91麻豆精品国产自产在线观看一区| 日韩一区精品| 四虎海外影库www4hu| 欧美日韩电影在线| 亚洲国产97在线精品一区| 东京热加勒比无码少妇| 国产日韩欧美精品电影三级在线| 韩国中文字幕av| 自拍一区在线观看| 国产在线拍揄自揄拍无码| 国产乱码精品一区二区三区忘忧草| 免费无码不卡视频在线观看| 免费的黄网站在线观看| 色视频在线观看在线播放| av在线理伦电影| 亚洲视频在线看| 国产在线观看无码免费视频| 青青草原av在线播放| 视频一区欧美精品| 色一色在线观看视频网站| 亚洲国产专区校园欧美| 国产精品特级毛片一区二区三区| 欧美 变态 另类 人妖| 欧美精品一区二区性色a+v| 亚洲免费在线观看| 中文字幕精品无码亚| 亚洲欧洲国产精品久久| 国模大尺度视频一区二区| 成人激情免费视频|