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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

leecode 解題總結(jié):37 Sudoku Solver

2019-11-10 20:20:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
#include <iostream>#include <stdio.h>#include <vector>#include <fstream>using namespace std;/*問(wèn)題:Write a PRogram to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will be only one unique solution.A sudoku puzzle......and its solution numbers marked in red.分析:這是搜索是否有解的問(wèn)題,廣度優(yōu)先搜索最優(yōu)解,深度優(yōu)先搜索確定是否有解。因此本題應(yīng)該用深度優(yōu)先搜索??搭}目,如果擺放新的元素不成功,應(yīng)該是要回溯的。因此,此題應(yīng)該是回溯來(lái)做。每一次嘗試擺放一個(gè)1~9中的某個(gè)元素,如果擺放不成功,就用另一個(gè)元素替換,如果最終棋盤擺滿了,就輸出結(jié)果。如何判定沒(méi)有結(jié)果,如果1判斷是否滿足可行解,只需要當(dāng)前board[i][j]元素為c是否在行號(hào),列號(hào),子棋盤擺放過(guò)	判斷子棋盤上的9個(gè)元素是否與給定元素重復(fù),先確定 子棋盤的行號(hào)=行號(hào)	給定位置(row,jcol)計(jì)算對(duì)應(yīng)子棋盤的行號(hào)(x,y)	x = 3 * (row / 3)	y = 3 * (col / 3)	子棋盤編號(hào) = 3 *(row / 3) + col /3 = 3 + 2 = 5,行號(hào)確定大的子棋盤編號(hào),列號(hào)確定小的子棋盤編號(hào)	子棋盤元素下標(biāo) = 3 * (col / 3) + col % 3 = 3 * 2 + 8 % 3 = 8,其實(shí)就是將列分成3等份,然后取余數(shù)	比如給定元素(5,8),對(duì)應(yīng)第6子棋盤中(編號(hào)為5)中第8個(gè)元素	這里由于采用i為0~8,i默認(rèn)為列號(hào)	則新的子棋盤編號(hào)=board[ 3 * (row / 3) + i / 3 ][3 * (col / 3) + i % 3]	subBoardIndex = 3 * (row / 3) + i / 3;	index = 3 * (col / 3) + i % 3;*/class Solution {public:	bool isValidSudoku(vector<vector<char> > &board , int row  , int col , char c)	{		if(board.empty())		{			return false;		}		int size = board.size();		int subBoardIndex;		int index;		for(int i = 0 ; i < 9 ; i++)		{			if(board[i][col] != '.' && board[i][col] == c)			{				return false;			}			if(board[row][i] != '.' && board[row][i] == c)			{				return false;			}			/*			判斷子棋盤上的9個(gè)元素是否與給定元素重復(fù),先確定 子棋盤的行號(hào)=行號(hào)			給定位置(row,jcol)計(jì)算對(duì)應(yīng)子棋盤的行號(hào)(x,y)			x = 3 * (row / 3)			y = 3 * (col / 3)			子棋盤編號(hào) = 3 *(row / 3) + col /3 = 3 + 2 = 5,行號(hào)確定大的子棋盤編號(hào),列號(hào)確定小的子棋盤編號(hào)			子棋盤元素下標(biāo) = 3 * (col / 3) + col % 3 = 3 * 2 + 8 % 3 = 8,其實(shí)就是將列分成3等份,然后取余數(shù)			比如給定元素(5,8),對(duì)應(yīng)第6子棋盤中(編號(hào)為5)中第8個(gè)元素			這里由于采用i為0~9,i默認(rèn)為列號(hào)			則新的子棋盤編號(hào)=board[ 3 * (row / 3) + i / 3 ][3 * (col / 3) + i % 3]			*/			subBoardIndex = 3 * (row / 3) + i / 3;			index = 3 * (col / 3) + i % 3;			if(board[subBoardIndex][index] != '.' && board[subBoardIndex][index] == c)			{				return false;			}		}		return true;	}	bool isSolved(vector<vector<char>>& board)	{		if(board.empty())		{			return false;		}		int size = board.size();		for(int i = 0 ; i < size ; i++)		{			for(int j = 0 ; j < size ; j++ )			{				if('.' == board.at(i).at(j))				{					//嘗試在空白的區(qū)域處擺放下一個(gè)元素,這里直接用cha					for(char c = '1' ; c <= '9' ; c++)					{						//如果擺放有效,繼續(xù)處理						if(isValidSudoku(board , i , j , c))						{							board.at(i).at(j) = c;							//牛逼,直接用遞歸判斷下一次是否擺放成功							if(isSolved(board))							{								return true;							}							else							{								board.at(i).at(j) = '.';							}						}					}					//如果一直沒(méi)有得到結(jié)果,說(shuō)明無(wú)效					return false;				}			}		}		return true;	}    void solveSudoku(vector<vector<char>>& board) {		if(board.empty())		{			return;		}		bool isSolve = isSolved(board);		_isSolved = isSolve;	}public:	bool _isSolved;};vector<string> readFile(string& fileName){	vector<string> results;	if(fileName.empty())	{		return results;	}	ifstream file(fileName , ios::in);	if(!file)	{		cout << "can't open file" << endl;		return results;	}	const int maxSize = 1024;	char str[maxSize];	while(!file.eof())	{		file.getline(str , maxSize);		string s(str);		results.push_back(s);	}	file.close();	return results;}void print(vector< vector<char> >& board){	if(board.empty())	{		cout << "no result" << endl;	}	int size = board.size();	for(int i = 0 ; i < size ; i++)	{		for(int j = 0 ; j < size ; j++ )		{			cout << board.at(i).at(j);		}		cout << endl;	}}void process(){	vector< vector<char> > board;	string s;	int size;	Solution solution;	board.clear();	vector<string> strs = readFile(string("data.txt"));	int len = strs.size();	for(int i = 0 ; i < len ; i++)	{		s = strs.at(i);		vector<char> str;		size = s.length();		for(int i = 0 ; i < size ; i++)		{			str.push_back(s.at(i));		}		board.push_back(str);	}	solution.solveSudoku(board);	if(solution._isSolved)	{		print(board);	}	else	{		cout << "no" << endl;	}}int main(int argc , char* argv[]){	process();	getchar();	return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
95影院理论片在线观看| 欧美日本国产一区| 亚洲一区二区三区小说| 国产精品69xx| 中文字幕在线视频一区二区| 欧美一级在线免费观看| 国产福利图片| 亚洲欧美经典视频| 国产呦精品一区二区三区网站| 美女视频网站久久| 一区二区三区中文字幕电影| 国产亚洲成年网址在线观看| 亚洲一区 在线播放| 警花av一区二区三区| 初尝黑人巨炮波多野结衣电影| 91精品国产高清久久久久久91裸体| 怡红院亚洲色图| 成人亚洲欧美一区二区三区| 亚洲国产精品嫩草影院久久| 成年女人a毛片免费视频| 欧美性做爰猛烈叫床潮| 亚洲欧美卡通另类91av| 国产一区二区三区欧美| 亚洲麻豆一区二区三区| 亚洲一区二区三| 涩涩视频在线观看| 国产精品人妖ts系列视频| 成人中文在线| 国产人妻精品午夜福利免费| 精品福利在线导航| 久久免费国产精品1| 亚洲免费网站观看视频| 国产精品www色诱视频| 国产免费av国片精品草莓男男| 久久人人看视频| 国产又爽又黄的视频| 欧产日产国产v| 国产女主播一区| 97超级碰在线看视频免费在线看| 久久国产精品亚洲| 87福利电影网| 日韩欧美成人激情| 猫咪成人在线观看| 美女一区二区三区在线观看| 亚洲一区二区三区黄色| 免费中文日韩| 来吧亚洲综合网| 中文字幕在线播放视频| 久久综合九色综合97婷婷| 欧美极度另类性三渗透| aaa在线视频| 日本电影亚洲天堂| 国产成人无码av在线播放dvd| 欧美国产日韩另类| 精品久久久久久一区| free性欧美hd另类精品| 台湾佬成人网| jizzjizz16| 无人在线观看的免费高清视频| 一区二区三区小说| 国产精品99精品无码视| 欧美福利视频导航| 两个人日本在线观看视频| 四色最新网址| www.综合网.com| 91久久精品无嫩草影院| 综合av第一页| 八戒八戒神马在线电影| 国产激情一区二区三区桃花岛亚洲| 免费成人美女在线观看.| 99久久视频| 国产精品99久久免费黑人人妻| 国产中文字幕网| 66国产精品| 久久久久久久高潮| 先锋影音久久久| 色综合久久综合中文综合网| 精品一区二区三区免费爱| 亚洲天堂视频网| 春日野结衣av| 国产一区二区三区四区五区3d| 欧美国产视频在线观看| 丝袜老师办公室里做好紧好爽| 国产精选在线视频拍拍拍| 黄色片免费大全| 国产噜噜噜噜噜久久久久久久久| 国产精品国产三级国产在线观看| aiss精品大尺度系列| 日本一区二区在线视频观看| 欧美国产日韩xxxxx| 日韩一区二区av| 亚洲国产综合在线看不卡| 人妻丰满熟妇av无码区| jizz在亚洲| 国产十八熟妇av成人一区| 激情综合网激情| 日日夜夜天堂| 麻豆视频在线免费观看| 国产毛片毛片毛片毛片毛片毛片| 欧美一级大片视频| 久久嫩草精品久久久精品| 久久人妻无码aⅴ毛片a片app| 欧美成人精品一级| 三级黄色录像视频| 香蕉av一区二区三区| 色多多视频在线观看| 男女污污视频网站| 国产成人午夜精品5599| 国产精品美女久久久久av福利| 国产伦精品一区二区三区高清版| 亚洲亚裔videos黑人hd| 国产精品亚洲午夜一区二区三区| 快射av在线播放一区| 久久黄色小视频| 日韩成人性视频| 二区三区四区高清视频在线观看| 三级视频在线| a一区二区三区亚洲| 国产又爽又黄免费软件| 中文字幕1区2区3区| 五月激情婷婷网| 激情av在线| 免费看ww视频网站入口| 激情五月色综合国产精品| 毛片一区二区三区| 国产精品一区二区三区在线免费观看| 亚洲国产综合91精品麻豆| 国产精品成人午夜| 日本黄色片在线播放| 久久涩涩网站| 久久久久久久久久99| 国产乱妇乱子在线播视频播放网站| 国产福利一区二区精品秒拍| 成人av网址在线观看| 日韩xxx高潮hd| 国产美女情趣调教h一区二区| www.四虎精品| 一区二区三区四区视频在线观看| 日韩手机在线视频| 久久国产精品无码网站| 三级小说欧洲区亚洲区| 国产精品熟妇一区二区三区四区| 日本三级免费看| 免费看又黄又无码的网站| 国产女同91疯狂高潮互磨| a毛片在线观看| 国产精品久久久亚洲一区| 亚洲国产片色| 亚洲一区二区三区免费| 污视频网站在线免费| 中文在线二区| 看黄色一级大片| 在线综合+亚洲+欧美中文字幕| 亚洲系列在线观看| 国产精品视频公开费视频| 成人av网址在线观看| 欧美88888| 99久久夜色精品国产网站| 国产黄色一区二区三区| 波多野结衣在线观看| 孩娇小videos精品| 精品国产一级毛片| 在线免费观看av片| 韩日午夜在线资源一区二区| 久久影院午夜论| 国产在线激情| 成人激情黄色小说| 在线成人性视频| 高清毛片在线观看| 91久久精品国产91性色tv| 亚洲美女视频在线观看| 丁香花在线电影小说观看| 精品成人影院| 欧美三级在线| 欧美97人人模人人爽人人喊视频| 国产成人免费xxxxxxxx| 色哟哟在线观看一区二区三区| 亚洲福利影院| 在线播放三级网站| 在线一区二区三区视频| 久久久999| 国产日产精品一区二区三区| 亚洲AV无码久久精品国产一区| 2018中文字幕一区二区三区| 国产高清中文字幕在线| 国产乱码77777777| 少妇av在线| 国产自产v一区二区三区c| 日韩专区视频| 欧美精品一区二区三区在线播放| 欧美日韩成人影院| 国产精品视频网站在线观看| 国产一级淫片a视频免费观看| av无码精品一区二区三区| 久久不射影院| 在线欧美一区| 免费观看成人在线| 91精品店在线| 国产午夜麻豆影院在线观看| 欧美视频在线观看 亚洲欧| 成人一级福利| 1024手机看片国产| 谁有免费的黄色网址| 一级毛片免费高清中文字幕久久网| 麻豆av福利av久久av| 激情综合闲人网| 亚洲天堂av中文字幕| zzjj国产精品一区二区| 日本丰满大乳奶| 黄片毛片在线看| 精品香蕉视频| 久久国产福利| 亚洲美女色播| 久久久精品人妻无码专区| 精品国产一区二区三区成人影院| 一区二区三区小视频| 久久综合中文字幕| 人成免费在线视频| 日韩精品一区二区三区四区| 四虎影在永久在线观看| 午夜精品一区二区三区电影天堂| 色视频www在线播放国产| 亚洲精品1区2区| 国产一区精品视频| 日本免费福利视频| 少妇一级淫免费观看| 欧美精品momsxxx| 136福利精品导航| 国产中文字字幕乱码无限| 中文字幕日韩欧美在线| 精品一区在线观看视频| 精品成人一区二区三区| 久久影视免费观看| 91精品又粗又猛又爽| 亚洲精品videossex少妇| 中文字幕66页| 日韩精品专区在线| 日韩情涩欧美日韩视频| 欧美色老头old∨ideo| 日韩美女一级视频| 一本色道久久综合亚洲aⅴ蜜桃| 在线91免费看| av3级在线| 国产美女99p| 三级在线电影| 国产69视频在线观看| 亚洲成av人电影| 欧美日韩国产小视频| 久久免费精品国产| 国产精品2020| 国产中文字幕在线播放| 国产精品久久久久久久99| 亚洲开发第一视频在线播放| 美女免费观看一区二区三区| 日韩一区二区电影在线观看| 国产在线视频精品视频免费看| av动漫在线免费观看| 国产精品女主播av| 亚洲www永久成人夜色| 中文国产在线观看| 午夜欧美理论片| 国产精品99爱免费视频| 黄视频网站免费看| 国产精品1024久久| 国产精品国产三级国产试看| 日本jizzcom| 欧美精品videos另类日本| 全色精品综合影院| 国产一级性生活| 国产日韩欧美制服另类| 国产乱国产乱老熟300| 日韩中文字幕av在线| 亚洲一区二区三| 黑人巨大精品欧美一区| 国产aa精品| 国产精品入口免费| 在线观看免费中文字幕| 不卡av中文字幕| 波多野结衣av在线| 一区二区三区电影大全| 欧美禁忌电影网| 欧美一区二区高清| 中文av字幕在线观看| 影院在线观看全集免费观看| 影音先锋男人资源站在线观看| 久久综合加勒比| 日韩亚洲国产欧美| 久久亚洲精品一区| 黄色国产精品一区二区三区| 黄色av片三级三级三级免费看| 亚洲精品tv久久久久久久久久| 亚洲欧洲免费视频| 亚洲天堂免费观看| 一二三在线视频| 菠萝蜜视频在线观看www入口| 中文字幕日本人妻久久久免费| 中文字幕xxx| 福利视频午夜| 日本在线观看中文字幕| 亚洲一区二区天堂| 激情五月亚洲色图| 爽爽爽爽爽爽爽成人免费观看| 一插菊花综合| 亚洲欧洲一区二区福利| 久久久久久国产精品久久| 欧美人成在线观看ccc36| 亚洲精品555| 毛茸茸多毛bbb毛多视频| 97精品国产91久久久久久| 性中国xxx极品hd| 成人激情视频在线播放| 免费女人毛片视频| 国产视频在线观看网站| 天天躁日日躁狠狠躁欧美巨大小说| 国产精品xxxx喷水欧美| 99精品一区二区| 中文字幕一区二区5566日韩| 最新亚洲精品| 国产免费无码一区二区视频| 精品欧美一区二区精品久久| 91亚洲va在线va天堂va国| 97精品国产99久久久久久免费| 国产精品一区二区性色av| 69视频在线观看免费| 日韩欧美精品一区| 亚洲成人一区在线观看| 神马一区二区三区| 日本黄色免费在线|