亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aidlg.cpp

?? 滑塊問題求解系統:利用深度優先搜索和廣度優先搜索解決有趣的滑塊問題求解系統。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
		test_tbfs[step].B += p->search->getB();

		//a1
		p->search = &p->astar1;
		p->search->search(begin, end, stop, 1);			
		test_a1[step].step += p->search->getTotalnode();
		test_a1[step].B += p->search->getB();

		//a2
		p->search = &p->astar2;
		p->search->search(begin, end, stop, 1);	
		test_a2[step].step += p->search->getTotalnode();
		test_a2[step].B += p->search->getB();

		//ids
		p->search = &p->idfs;
		p->search->search(begin, end, stop);		
		test_ids[step].step += p->search->getTotalnode();
		test_ids[step].B += p->search->getB();
	}
	
	FILE *file = fopen("test.txt", "w");
	fprintf(file, "%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n", 
			"STEP", "TIME", "bfs", "tbfs", 
			"astar1", "astar2", "idfs", "bfs", "tbfs", "astar1", "astar2", "idfs");
	for(int i = 1; i < 32; ++i){
		if(!count[i])
			continue;
		fprintf(file, "%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10.3lf%-10.3lf%-10.3lf%-10.3lf%-10.3lf\n",
			i,
			count[i],
			test_bfs[i].step / count[i],
			test_tbfs[i].step / count[i],
			test_a1[i].step / count[i],
			test_a2[i].step / count[i],
			test_ids[i].step / count[i],
			test_bfs[i].B / count[i],
			test_tbfs[i].B / count[i],
			test_a1[i].B / count[i],
			test_a2[i].B / count[i],
			test_ids[i].B / count[i]
		);
	}
	fclose(file);
	return 0;
}

void CAIDlg::test()
{
	HANDLE hThread1 = CreateThread(NULL, 0, TestProc, this, 0, NULL);
	CloseHandle(hThread1);
}

#endif


void CAIDlg::OnBnClickedButtonBegin()
{
	// TODO: 在此添加控件通知處理程序代碼
#ifdef TEST
	test();
#else
	gamestart = true;  //防止按鈕選擇
	CString str;
	if(GetDlgItemText(IDC_BUTTON_BEGIN, str), str == "停止搜索"){
		stop = 1;
		return;
	}
	if(statusReady() == false){
		MessageBox("未設置初未狀態!", "錯誤");
		return;
	}
	SetDlgItemText(IDC_BUTTON_BEGIN, "停止搜索");

	( (CButton *)GetDlgItem(IDC_CHECK_HAND) )->EnableWindow(FALSE);

	//初始
	prevstep.EnableWindow(FALSE);
	nextstep.EnableWindow(FALSE);
	recover.EnableWindow(FALSE);
	display.EnableWindow(FALSE);

	//狀態框按鈕
	( (CButton *) GetDlgItem(IDC_BUTTON_DEFAULT) )->EnableWindow(FALSE);
	( (CButton *) GetDlgItem(IDC_BUTTON_RANDOM) )->EnableWindow(FALSE);
	( (CButton *) GetDlgItem(IDC_BUTTON_HAND) )->EnableWindow(FALSE);
	( (CButton *) GetDlgItem(IDC_CHECK_BEGIN) )->EnableWindow(FALSE);
	( (CButton *) GetDlgItem(IDC_CHECK_END) )->EnableWindow(FALSE);	
	( (CButton *) GetDlgItem(IDC_CHECK_NOANSWER) )->EnableWindow(FALSE);	

	HANDLE hThread1 = CreateThread(NULL, 0, SearchProc, this, 0, NULL);
	CloseHandle(hThread1);
#endif
	
}


void CAIDlg::move(int pos)
{
	static const int C[]={2, 3, 2, 3, 4, 3, 2, 3, 2};
	static const int EP[][4]={{1,3,0,0},{0,2,4,0},{1,5,0,0},{0,4,6,0},{1,3,5,7},{2,4,8,0},{3,7,0,0},{4,6,8,0},{5,7,0,0}};
	if(pos_begin_return[pos] == -1)
		return;
	int i;
	for(i = 0; i < C[pos]; ++i){
		if(pos_begin_return[ EP[pos][i] ] == -1){
			m_selectval = pos_begin_return[pos];
			changeBitmap(m_init, select_begin, pos_begin, pos_begin_return, EP[pos][i]);			
			break;
		}
	}
	if(i >= C[pos])   //不可移的方塊
		return;
	int status = getStatus(pos_begin_return);
	while(path.size() - 1 > top)
		path.pop_back();
	path.push_back(status);
	++top;
	if(top == 1){
		( (CButton *)GetDlgItem(IDC_BUTTON_PREV))->EnableWindow(TRUE);
		( (CButton *)GetDlgItem(IDC_BUTTON_RECOVER))->EnableWindow(TRUE);
	}

	( (CButton *)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(FALSE);
	SetNowstep(top);
	
}

void CAIDlg::OnBnClickedButtonPrev()
{
	// TODO: 在此添加控件通知處理程序代碼
	SetStatus(m_init, select_begin, pos_begin, pos_begin_return, path[--top]);
	( (CButton *)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(TRUE);
	if(top < 1)
		( (CButton *)GetDlgItem(IDC_BUTTON_PREV))->EnableWindow(FALSE);
	SetNowstep(top);
}


void CAIDlg::OnBnClickedButtonNext()
{
	// TODO: 在此添加控件通知處理程序代碼
	SetStatus(m_init, select_begin, pos_begin, pos_begin_return, path[++top]);
	if(top >= (path.size() - 1) )
		( (CButton *)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(FALSE);
	( (CButton *)GetDlgItem(IDC_BUTTON_PREV))->EnableWindow(TRUE);
	SetNowstep(top);
}


void CAIDlg::OnBnClickedButtonDefault()
{
	// TODO: 在此添加控件通知處理程序代碼
	if(!path.empty() && 
		IDOK != MessageBox("將要丟失原來信息,是否確認", "確認", MB_OKCANCEL) ){			
			return;
	}
	static begin_default = 234150768, end_default = 87654321;	
	SetStatus(m_init, select_begin, pos_begin, pos_begin_return, begin_default);
	SetStatus(m_end, select_end, pos_end, pos_end_return, end_default);
	path.clear();
	GetMenu()->EnableMenuItem(ID_CREATE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
	prevstep.EnableWindow(FALSE);
	nextstep.EnableWindow(FALSE);
	display.EnableWindow(FALSE);
	recover.EnableWindow(FALSE);
	SetNowstep(0);
}

void CAIDlg::OnBnClickedButtonRecover()
{
	// TODO: 在此添加控件通知處理程序代碼
	SetStatus(m_init, select_begin, pos_begin, pos_begin_return, path[top = 0]);	
	if(path.size() - 1 > top)
		( (CButton *)GetDlgItem(IDC_BUTTON_NEXT))->EnableWindow(TRUE);	
	( (CButton *)GetDlgItem(IDC_BUTTON_PREV))->EnableWindow(FALSE);
	SetNowstep(0);
}


DWORD WINAPI DisplayProc(LPVOID lpParameter){
	CAIDlg *p = (CAIDlg *) lpParameter;
	
	p->prevstep.EnableWindow(FALSE);
	p->nextstep.EnableWindow(FALSE);
	p->recover.EnableWindow(FALSE);	

	//狀態框按鈕
	( (CButton *) p->GetDlgItem(IDC_BUTTON_DEFAULT) )->EnableWindow(FALSE);
	( (CButton *) p->GetDlgItem(IDC_BUTTON_RANDOM) )->EnableWindow(FALSE);
	( (CButton *) p->GetDlgItem(IDC_BUTTON_HAND) )->EnableWindow(FALSE);
	( (CButton *) p->GetDlgItem(IDC_CHECK_BEGIN) )->EnableWindow(FALSE);
	( (CButton *) p->GetDlgItem(IDC_CHECK_END) )->EnableWindow(FALSE);	
	( (CButton *) p->GetDlgItem(IDC_CHECK_NOANSWER) )->EnableWindow(FALSE);	


	while(!p->stop && p->top + 1 < p->path.size() ){
		/*debug
		char str[30];
		sprintf(str, "top = %d\r\n, status = %d", p->top, p->path[p->top]);
		p->SetDlgItemText(IDC_EDIT_RESULT, str);*/		
		p->SetStatus( p->m_init, p->select_begin,  p->pos_begin,  p->pos_begin_return,  p->path[++p->top]);	
		p->SetNowstep(p->top);
		Sleep(p->m_sleep);
	}

	( (CButton *) p->GetDlgItem(IDC_BUTTON_DEFAULT) )->EnableWindow(TRUE);
	( (CButton *) p->GetDlgItem(IDC_BUTTON_RANDOM) )->EnableWindow(TRUE);
	( (CButton *) p->GetDlgItem(IDC_BUTTON_HAND) )->EnableWindow(TRUE);
	( (CButton *) p->GetDlgItem(IDC_CHECK_BEGIN) )->EnableWindow(TRUE);
	( (CButton *) p->GetDlgItem(IDC_CHECK_END) )->EnableWindow(TRUE);
	( (CButton *) p->GetDlgItem(IDC_CHECK_NOANSWER) )->EnableWindow(TRUE);	

	if(p->top + 1 < p->path.size() ){
		p->nextstep.EnableWindow(TRUE);
	}
	if(p->top > 0){
		p->prevstep.EnableWindow(TRUE);
	}
	p->recover.EnableWindow(TRUE);	
	p->SetDlgItemText(IDC_BUTTON_AUTO, "自動演示");
	return 0;
}

void CAIDlg::OnBnClickedButtonAuto()
{
	// TODO: 在此添加控件通知處理程序代碼
	CString str;
	if( GetDlgItemText(IDC_BUTTON_AUTO, str), str == "自動演示"){
		stop = 0;
		if(top == path.size() - 1)
			return;
		HANDLE hThread1 = CreateThread(NULL, 0, DisplayProc, this, 0, NULL);
		CloseHandle(hThread1);
		SetDlgItemText(IDC_BUTTON_AUTO, "暫停演示");
	}else{
		stop = 1;		
	}
}


void CAIDlg::loadpicture(int start)
{
	for(int i = start, j = 1; i <= start + 7; ++i, ++j){
		m_bitmap[j].DeleteObject();
		m_bitmap[j].LoadBitmap(i);
	}
	for(int i = 1; i < NUM; ++i){
		m_hand[i].SetBitmap(m_bitmap[i]);
		m_init[i].SetBitmap(NULL);
		m_end[i].SetBitmap(NULL);
	}
	m_init[0].SetBitmap(NULL);
	m_end[0].SetBitmap(NULL);
}
void CAIDlg::OnAbout()
{
	// TODO: 在此添加命令處理程序代碼
	CAboutDlg about;
	about.DoModal();
}

void CAIDlg::OnGirl()
{
	// TODO: 在此添加命令處理程序代碼
	changeimage(ID_GIRL);
}

void CAIDlg::OnDigits()
{
	// TODO: 在此添加命令處理程序代碼
	changeimage(ID_DIGITS);
}

void CAIDlg::OnIco()
{
	// TODO: 在此添加命令處理程序代碼
	changeimage(ID_ICO);
}


void CAIDlg::changeimage(int id)
{
	static int image = ID_DIGITS;
	struct IMAGE{
		int id, int start;
	};
	static struct IMAGE maps[] = {
		{ID_DIGITS, IDB_BITMAP1},
		{ID_GIRL, IDB_BITMAP9},
		{ID_ICO, IDB_BITMAP17}
	};
	if(id == image)
		return;
	path.clear();
	memset(pos_begin_return, -1, sizeof(pos_begin_return));
	memset(pos_begin, -1, sizeof(pos_begin));
	memset(pos_end_return, -1, sizeof(pos_end_return));
	memset(pos_end, -1, sizeof(pos_end));
	GetMenu()->CheckMenuItem(image, MF_UNCHECKED);
	GetMenu()->CheckMenuItem(id, MF_CHECKED);
	image = id;
	for(int i = 0; i < sizeof(maps) / sizeof(struct IMAGE); ++i){
		if(maps[i].id == id){
			loadpicture(maps[i].start);
			return;
		}
	}
}



void CAIDlg::SetNowstep(int step)
{
	char str[20];
	sprintf(str, "當前步數:%d", step);
	SetDlgItemText(IDC_NOWSTEP, str);
}

void CAIDlg::SetParameter()
{
	// TODO: 在此添加命令處理程序代碼	
	if(set.DoModal() == 1000)
		set.GetParameter(m_heuristic, m_sleep, m_maxstep);
}

void CAIDlg::OnCreate()
{
	// TODO: 在此添加命令處理程序代碼
	static CGraph graph;
	graph.getPath(path);
	graph.DoModal();
}

void CAIDlg::OnHelp()
{
	// TODO: 在此添加命令處理程序代碼
	CHelp help;
	help.DoModal();
}

void CAIDlg::OnCompare()
{
	// TODO: 在此添加命令處理程序代碼
	if(statusReady() == false){
		MessageBox("未設置初未狀態!", "錯誤");
		return;
	}
	int begin = getStatus(pos_begin_return);
	int end = getStatus(pos_end_return);
	if(begin == end){
		MessageBox("一樣的還咋比?", "^-^");
		return;
	}

	CCompare compare;
	compare.getHer(m_heuristic);
	compare.getMaxstep(m_maxstep);
	int m_begin, m_end;
	while(m_begin = getStatus(pos_begin_return), m_end = getStatus(pos_end_return),
				(search->getreverse(m_begin) & 1) != (search->getreverse(m_end) & 1) ){
		if(IDOK == MessageBox("此題無解,是否重新選擇?", "確認", MB_OKCANCEL) ){
			OnBnClickedButtonRandom();
		}
		else
			return;
	}
	compare.getStatus(m_begin, m_end);
	compare.DoModal();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线这里只有精品| 国产精品白丝在线| 中文字幕在线一区| 日韩在线一二三区| 懂色一区二区三区免费观看| 欧美日韩一二三区| 中文一区二区在线观看| 偷拍与自拍一区| 91视频你懂的| 久久久久久影视| 日韩av电影免费观看高清完整版| 成人av在线资源网站| 精品久久免费看| 丝袜美腿亚洲综合| 色婷婷av一区二区| 亚洲色图欧美在线| 成人免费毛片a| 久久久亚洲欧洲日产国码αv| 亚洲国产精品一区二区久久| eeuss鲁片一区二区三区在线观看| 日韩欧美成人激情| 婷婷成人综合网| 色婷婷久久久亚洲一区二区三区| 日本一区二区综合亚洲| 国产综合久久久久影院| 欧美va在线播放| 蜜臀av一级做a爰片久久| 欧美性大战xxxxx久久久| 亚洲人成网站在线| 色综合久久88色综合天天6| 中文字幕中文字幕在线一区 | 亚洲人精品午夜| 国产98色在线|日韩| 日本一区二区三区高清不卡| 国产一区二区三区在线观看精品| 欧美成人精品福利| 韩国成人在线视频| 精品国产伦一区二区三区免费| 免费精品视频最新在线| 欧美美女网站色| 免费成人在线网站| 久久久综合激的五月天| 成人毛片视频在线观看| 国产精品久久久久天堂| www.亚洲免费av| 一区二区视频免费在线观看| 91福利视频在线| 午夜av区久久| 久久亚洲精精品中文字幕早川悠里 | 久久一区二区三区国产精品| 国产一区激情在线| 国产精品天美传媒沈樵| 色综合天天综合网天天狠天天| 亚洲激情图片qvod| 欧美日韩国产a| 激情综合色播激情啊| 国产女人aaa级久久久级| 色妞www精品视频| 日韩vs国产vs欧美| 久久久国产精品午夜一区ai换脸| a4yy欧美一区二区三区| 亚洲高清视频的网址| 精品欧美一区二区三区精品久久| 懂色av一区二区三区免费观看| 亚洲精选视频免费看| 91精品国产欧美日韩| 成人免费视频免费观看| 视频在线观看国产精品| 欧美国产禁国产网站cc| 欧美日韩日本视频| 国产成人免费高清| 日韩中文字幕av电影| 国产精品免费观看视频| 7777精品伊人久久久大香线蕉| 国产激情精品久久久第一区二区| 一区二区三区中文在线| 精品美女被调教视频大全网站| av电影在线不卡| 久久99国产乱子伦精品免费| 亚洲三级久久久| 久久久久久久久久久99999| 欧美午夜精品电影| 国产v日产∨综合v精品视频| 婷婷六月综合亚洲| 亚洲欧洲日韩女同| 欧美精品一区二区久久婷婷| 欧洲国内综合视频| 丁香啪啪综合成人亚洲小说| 青青草97国产精品免费观看| 亚洲欧美偷拍卡通变态| 久久影院午夜论| 日韩一卡二卡三卡国产欧美| 91玉足脚交白嫩脚丫在线播放| 黄色精品一二区| 日本欧美一区二区| 亚洲国产日韩在线一区模特| 国产精品免费视频网站| 久久综合九色综合欧美就去吻| 欧美挠脚心视频网站| 99视频超级精品| 国产99久久精品| 国产成人综合亚洲网站| 精品一区二区三区免费播放| 偷拍一区二区三区| 午夜亚洲福利老司机| 亚洲午夜精品一区二区三区他趣| 国产精品国产a级| 欧美国产日韩在线观看| 精品国产不卡一区二区三区| 日韩一区二区三区精品视频| 日韩一区二区三区四区五区六区| 欧美日韩精品一区视频| 在线观看日产精品| 精品视频在线免费看| 91国在线观看| 欧美三级午夜理伦三级中视频| 在线看日本不卡| 欧美日韩视频在线第一区| 欧美精品自拍偷拍动漫精品| 欧美精品粉嫩高潮一区二区| 欧美丰满一区二区免费视频| 91精品国产日韩91久久久久久| 69堂精品视频| 精品国产91乱码一区二区三区| 欧美xxxxxxxx| 久久久亚洲国产美女国产盗摄| 国产三级三级三级精品8ⅰ区| 国产三级欧美三级日产三级99| 国产婷婷色一区二区三区| 国产人伦精品一区二区| 国产精品毛片高清在线完整版 | 欧美一级xxx| 日韩欧美色电影| 2024国产精品| 国产农村妇女精品| 国产精品视频观看| 玉米视频成人免费看| 天堂成人国产精品一区| 国产一区二区三区电影在线观看| 国产91精品一区二区麻豆网站| 99久久精品免费看国产| 欧美日韩国产天堂| 日韩欧美国产wwwww| 国产亚洲成av人在线观看导航| 国产精品国产三级国产aⅴ无密码| 亚洲三级理论片| 免费观看91视频大全| 高清av一区二区| 欧美精品在线一区二区三区| 久久免费电影网| 亚洲色欲色欲www| 蜜臀av一区二区在线观看 | 国产午夜精品一区二区三区四区| 国产精品久久久久影院老司| 亚洲一区二区免费视频| 久久99国内精品| 一本久久综合亚洲鲁鲁五月天| 欧美日韩mp4| 欧美国产日韩亚洲一区| 夜夜嗨av一区二区三区网页| 黄色日韩网站视频| 欧美在线一区二区三区| 久久无码av三级| 亚洲成人精品影院| 国产成人av电影在线| 7777精品伊人久久久大香线蕉完整版| 久久久国际精品| 日韩精品午夜视频| 一本一本大道香蕉久在线精品| 久久综合网色—综合色88| 一区二区三区免费在线观看| 国产盗摄视频一区二区三区| 欧美日韩三级一区| |精品福利一区二区三区| 黑人巨大精品欧美黑白配亚洲| 欧美视频在线观看一区二区| 国产精品成人免费精品自在线观看| 日韩二区三区在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美优质美女网站| 日本一区二区三区dvd视频在线| 肉肉av福利一精品导航| 91麻豆.com| 中文字幕乱码久久午夜不卡| 久久国产精品露脸对白| 欧美日本在线一区| 一区二区三区免费看视频| 99久久精品国产精品久久| 亚洲国产精品二十页| 精品一二三四区| 日韩一区二区三区高清免费看看 | 日本一区二区视频在线观看| 久久精品国产精品青草| 欧美肥妇bbw| 性久久久久久久| 欧美日精品一区视频| 亚洲与欧洲av电影| 欧美日韩一卡二卡三卡| 亚洲va国产天堂va久久en| 日韩免费视频一区二区|