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

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

?? eight-puzzledlg.cpp

?? 九宮圖 用過程表示法解
?? CPP
字號:
// Eight-PuzzleDlg.cpp : 實現文件
//

#include "stdafx.h"
#include "Eight-Puzzle.h"
#include "Eight-PuzzleDlg.h"
#include ".\eight-puzzledlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CEightPuzzleDlg 對話框



CEightPuzzleDlg::CEightPuzzleDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEightPuzzleDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	int pathA[9]={1,2,0,4,5,6,7,8,1};
	memcpy(m_pathA,pathA,sizeof(int)*9);

	int pathB[9]={2,3,4,5,6,7,8,0,2};
	memcpy(m_pathB,pathB,sizeof(int)*9);

	int pathC[7]={8,0,4,5,6,7,8};
	memcpy(m_pathC,pathC,sizeof(int)*7);

	int pathD[5]={1,2,0,8,1};
	memcpy(m_pathD,pathD,sizeof(int)*5);

	int pathE[7]={1,2,3,4,0,8,1};
	memcpy(m_pathE,pathE,sizeof(int)*7);

	int pathF[9]={1,2,3,4,5,6,7,8,1};
	memcpy(m_pathF,pathF,sizeof(int)*9);

	int pathG[5]={8,0,6,7,8};
	memcpy(m_pathG,pathG,sizeof(int)*5);

	int pathH[5]={0,4,5,6,0};
	memcpy(m_pathH,pathH,sizeof(int)*5);

	int pathS1[5]={2,3,4,0,2};
	memcpy(m_pathS1,pathS1,sizeof(int)*5);

	int pathS2[9]={1,2,3,4,5,6,7,8,1};
	memcpy(m_pathS2,pathS2,sizeof(int)*9);

}

void CEightPuzzleDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CEightPuzzleDlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()


// CEightPuzzleDlg 消息處理程序

BOOL CEightPuzzleDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
	//  執行此操作
	SetIcon(m_hIcon, TRUE);			// 設置大圖標
	SetIcon(m_hIcon, FALSE);		// 設置小圖標

	// TODO: 在此添加額外的初始化代碼
	SetDlgItemInt(IDC_EDIT0,0);
	SetDlgItemInt(IDC_EDIT1,3);
	SetDlgItemInt(IDC_EDIT2,8);
	SetDlgItemInt(IDC_EDIT3,2);
	SetDlgItemInt(IDC_EDIT4,4);
	SetDlgItemInt(IDC_EDIT5,7);
	SetDlgItemInt(IDC_EDIT6,6);
	SetDlgItemInt(IDC_EDIT7,5);
	SetDlgItemInt(IDC_EDIT8,1);
	
	return TRUE;  // 除非設置了控件的焦點,否則返回 TRUE
}

// 如果向對話框添加最小化按鈕,則需要下面的代碼
//  來繪制該圖標。對于使用文檔/視圖模型的 MFC 應用程序,
//  這將由框架自動完成。

void CEightPuzzleDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于繪制的設備上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使圖標在工作矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 繪制圖標
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

//當用戶拖動最小化窗口時系統調用此函數取得光標顯示。
HCURSOR CEightPuzzleDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

void CEightPuzzleDlg::OnBnClickedOk()
{
	ZeroMemory(m_nums,sizeof(int)*9);
	m_nums[0] = GetDlgItemInt(IDC_EDIT0);
	m_nums[1] = GetDlgItemInt(IDC_EDIT1);
	m_nums[2] = GetDlgItemInt(IDC_EDIT2);
	m_nums[3] = GetDlgItemInt(IDC_EDIT3);
	m_nums[4] = GetDlgItemInt(IDC_EDIT4);
	m_nums[5] = GetDlgItemInt(IDC_EDIT5);
	m_nums[6] = GetDlgItemInt(IDC_EDIT6);
	m_nums[7] = GetDlgItemInt(IDC_EDIT7);
	m_nums[8] = GetDlgItemInt(IDC_EDIT8);
	if(CheckArray()==false)
	{
		return;
	}
	if(IsSgState()==true)
	{
		OUTPUT;

		MessageBox("S(0)==S(g)");
		return;
	}
	else
	{
		OUTPUT;
		Step(1);
	}
}

bool CEightPuzzleDlg::CheckArray()
{
	bool bfound = false;
	for(int i=0;i<9;i++)
	{
		bfound = false;
		for(int j=0;j<9;j++)
		{
			if(bfound == true)
			{
				break;
			}

			if(m_nums[j]==i)
			{
				bfound = true;
			}
			else
			{
				bfound = false;
			}
		}
		if(bfound == false)
		{
			CString strmsg;
			strmsg.Format("Can't found number %d",i);
			MessageBox(strmsg);
			return false;
		}
	}
	return true;
}

bool CEightPuzzleDlg::IsSgState()
{
	for(int i=0;i<9;i++)
	{
		if(m_nums[i]!=i)
		{
			return false;
		}
	}
	return true;
}


void CEightPuzzleDlg::Step(int step)
{
	int temp=0;
	int x=0;
	switch(step)
	{
	case 1:
		{
			if (m_nums[1]==1)
			{
				Step(3);
			}
			else
			{
				while(m_nums[3]==0||m_nums[3]==1)
				{
					//when X3==0
					if(m_nums[3]==0)
					{
						if(m_nums[2]!=1)
						{
							temp = m_nums[3];
							m_nums[3]=m_nums[2];
							m_nums[2]=temp;
						}
						else if(m_nums[4]!=1)
						{
							temp = m_nums[3];
							m_nums[3]=m_nums[4];
							m_nums[4]=temp;
						}

					}
					//when X3==1
					if(m_nums[3]==1)
					{
						int x = FindZero();
						switch(x)
						{
						case 0:
						case 2:
						case 4:
							{
								while(m_nums[3]==0||m_nums[3]==1)
								{
									x = FindZero();
									Swap(m_nums[x],m_nums[m_pathS1[GetPos(m_pathS1,5,x)+1]]);
									OUTPUT;
								}
								break;
							}
						case 1:
						case 5:
						case 6:
						case 7:
						case 8:
							{
								while(m_nums[3]==0||m_nums[3]==1)
								{
									x = FindZero();
									Swap(m_nums[x],m_nums[m_pathS2[GetPos(m_pathS2,9,x)+1]]);
									OUTPUT;
								}
								break;
							}
						}
							
					}
				}
				Step(2);
			}
			break;
		}
	case 2:
		{
			
			while(!(m_nums[1]==1&&m_nums[8]==0))
			{
				x = FindZero();

				Swap(m_nums[x],m_nums[m_pathA[GetPos(m_pathA,9,x)+1]]);

				OUTPUT;
			}
			Step(3);
			break;
		}
	case 3:
		{
			while(!(m_nums[2]==2&&m_nums[0]==0))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathB[GetPos(m_pathB,9,x)+1]]);

				OUTPUT;
			}
			if(m_nums[3]==3)
			{
				Step(7);
			}
			else
			{
				Step(4);
			}
			break;
		}
	case 4:
		{
			while(!(m_nums[0]==3&&m_nums[8]==0&&m_nums[1]==1&&m_nums[2]==2))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathC[GetPos(m_pathC,7,x)+1]]);

				OUTPUT;
			}
			Step(5);
			break;
		}
	case 5:
		{
			while(!(m_nums[0]==0&&m_nums[8]==1&&m_nums[1]==2&&m_nums[2]==3))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathD[GetPos(m_pathD,5,x)+1]]);

				OUTPUT;
			}
			Step(6);
			break;
		}
	case 6:
		{
			while(!(m_nums[8]==0&&m_nums[1]==1&&m_nums[2]==2&&m_nums[3]==3))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathE[GetPos(m_pathE,7,x)+1]]);

				OUTPUT;
			}
			Step(7);
			break;
		}
	case 7:
		{
			while(!(m_nums[4]==4&&m_nums[0]==0))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathC[GetPos(m_pathC,7,x)+1]]);

				OUTPUT;
			}
			if(m_nums[5]==5)
			{
				Step(1);
			}
			else
			{
				Step(8);
			}
			break;
		}
	case 8:
		{
			while(!(m_nums[0]==5&&m_nums[8]==0))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathG[GetPos(m_pathG,5,x)+1]]);

				OUTPUT;
			}
			Step(9);
			break;
		}
	case 9:
		{
			while(!(m_nums[4]==0))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathF[GetPos(m_pathF,9,x)+1]]);

				OUTPUT;
			}
			//////////////////
			Swap(m_nums[0],m_nums[4]);
			Swap(m_nums[6],m_nums[0]);
			OUTPUT;
			Step(10);
			break;
		}
	case 10:
		{
			while(!(m_nums[7]==0&&m_nums[1]==1&&m_nums[2]==2&&m_nums[3]==3&&m_nums[4]==4&&m_nums[5]==5))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathF[GetPos(m_pathF,9,x)+1]]);

				OUTPUT;
			}
			Step(11);
			break;
		}
	case 11:
		{
			while(!(m_nums[0]==0&&m_nums[1]==1&&m_nums[2]==2&&m_nums[3]==3&&m_nums[4]==4&&m_nums[5]==5&&m_nums[6]==6&&m_nums[7]==7&&m_nums[8]==8)&&
				!(m_nums[0]==0&&m_nums[1]==1&&m_nums[2]==2&&m_nums[3]==3&&m_nums[4]==4&&m_nums[5]==5&&m_nums[6]==6&&m_nums[7]==8&&m_nums[8]==7))
			{
				x = FindZero();
				Swap(m_nums[x],m_nums[m_pathG[GetPos(m_pathG,5,x)+1]]);

				OUTPUT;
			}
			if((m_nums[0]==0&&m_nums[1]==1&&m_nums[2]==2&&m_nums[3]==3&&m_nums[4]==4&&m_nums[5]==5&&m_nums[6]==6&&m_nums[7]==8&&m_nums[8]==7))
			{
				MessageBox("Can't Get Answer!");
			}

			SetDlgItemInt(IDC_EDIT0,m_nums[0]);
			SetDlgItemInt(IDC_EDIT1,m_nums[1]);
			SetDlgItemInt(IDC_EDIT2,m_nums[2]);
			SetDlgItemInt(IDC_EDIT3,m_nums[3]);
			SetDlgItemInt(IDC_EDIT4,m_nums[4]);
			SetDlgItemInt(IDC_EDIT5,m_nums[5]);
			SetDlgItemInt(IDC_EDIT6,m_nums[6]);
			SetDlgItemInt(IDC_EDIT7,m_nums[7]);
			SetDlgItemInt(IDC_EDIT8,m_nums[8]);
			
			break;
		}
	default:
		{
			return;
		}
	}
}

int CEightPuzzleDlg::FindZero()
{
	for(int i=0;i<9;i++)
	{
		if(m_nums[i]==0)
		{
			return i;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品123| 欧美三级日韩三级| av男人天堂一区| 欧美日韩二区三区| 中文字幕综合网| 国产乱子轮精品视频| 91浏览器打开| 国产精品久久综合| 国产精品自在欧美一区| 9191成人精品久久| 亚洲精品中文字幕乱码三区| 精品亚洲成av人在线观看| 一本色道亚洲精品aⅴ| 日本一区二区免费在线| 日本成人在线不卡视频| 日本高清不卡在线观看| 国产精品免费视频观看| 狠狠久久亚洲欧美| 欧美一级一区二区| 丝袜亚洲另类欧美| 在线日韩一区二区| 亚洲免费观看高清完整 | 精品999久久久| 亚洲综合一区在线| 一本到不卡免费一区二区| 国产三级欧美三级日产三级99| 日韩一区精品视频| 欧美欧美午夜aⅴ在线观看| 亚洲免费视频中文字幕| 99久久亚洲一区二区三区青草| 欧美国产一区二区在线观看| 国产尤物一区二区| 久久先锋资源网| 国产成人午夜精品影院观看视频| 亚洲精品一区在线观看| 国产主播一区二区| www亚洲一区| 岛国av在线一区| 国产精品高清亚洲| 91丨九色丨尤物| 综合色天天鬼久久鬼色| 日本精品视频一区二区三区| 一区二区三区在线高清| 欧美探花视频资源| 日本vs亚洲vs韩国一区三区 | 一区二区三区高清在线| 色综合一区二区| 亚洲一区二区三区中文字幕在线| 欧美在线观看一二区| 天堂在线亚洲视频| 精品成人一区二区三区| 国产一区二区网址| 亚洲视频综合在线| 69堂国产成人免费视频| 国内精品自线一区二区三区视频| 久久久国产精华| 91亚洲大成网污www| 亚洲第一会所有码转帖| 欧美一级xxx| 成人av动漫在线| 亚洲图片欧美一区| 久久精品视频一区二区| 色婷婷综合激情| 韩国视频一区二区| 亚洲欧美色图小说| 日韩欧美资源站| 成人网在线免费视频| 亚洲成人综合视频| 成人精品视频一区| 在线成人av影院| 蜜臀a∨国产成人精品| 久久久美女艺术照精彩视频福利播放 | 亚洲免费在线电影| 日韩一级大片在线| 91女人视频在线观看| 亚洲精品成人悠悠色影视| 午夜成人免费电影| 国产亚洲污的网站| 精品午夜久久福利影院| 精品免费日韩av| 激情五月激情综合网| 久久久久久久一区| 国产福利一区在线| 日韩一区欧美一区| 一本大道久久a久久精二百| 亚洲免费电影在线| 欧美色视频在线| 午夜不卡在线视频| 欧美日韩中文字幕一区| 午夜激情一区二区| 日韩欧美成人午夜| 国产一区二区三区美女| 国产视频911| 91在线观看视频| 亚洲最大的成人av| 日韩欧美一区在线观看| 国产在线麻豆精品观看| 国产精品天干天干在线综合| 成人毛片视频在线观看| 亚洲精品国产无天堂网2021 | 午夜精品久久久久久久| 日韩视频免费直播| 成人一二三区视频| 一个色在线综合| 精品久久久久久综合日本欧美| 国产精品夜夜嗨| 一区二区三区四区视频精品免费| 欧美人与禽zozo性伦| 国产一区二区三区国产| 亚洲另类在线制服丝袜| 日韩一级成人av| 99久久综合狠狠综合久久| 亚洲成人动漫在线观看| 久久婷婷国产综合精品青草| 一本一道久久a久久精品| 麻豆国产精品官网| 亚洲久本草在线中文字幕| 日韩欧美第一区| 在线中文字幕一区| 国产另类ts人妖一区二区| 亚洲乱码中文字幕| 久久无码av三级| 在线不卡一区二区| 91在线观看一区二区| 激情综合网av| 日本中文在线一区| 亚洲精品乱码久久久久久黑人| 精品免费日韩av| 欧美精品三级在线观看| 99这里都是精品| 丁香婷婷深情五月亚洲| 免费成人在线视频观看| 亚洲国产日韩一级| 亚洲免费观看高清完整版在线观看熊| 精品国产乱码久久久久久1区2区| 色婷婷av一区二区三区gif| 国产成人av福利| 加勒比av一区二区| 老司机精品视频一区二区三区| 一区二区三区小说| 日韩毛片在线免费观看| 中文一区二区在线观看| 精品久久国产97色综合| 日韩欧美一级片| 91精品午夜视频| 欧美久久婷婷综合色| 欧美日韩视频不卡| 欧美综合亚洲图片综合区| 色噜噜狠狠成人中文综合 | 欧美视频三区在线播放| 9i看片成人免费高清| 成人激情免费视频| 国产99久久久久久免费看农村| 韩国成人福利片在线播放| 精品亚洲porn| 国模无码大尺度一区二区三区| 久久av资源网| 国内精品久久久久影院色| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品亚洲人在线观看| 国产精品一级片| 丁香啪啪综合成人亚洲小说 | 中文字幕亚洲视频| 国产欧美日韩一区二区三区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 99久久婷婷国产| 国产精品一区二区不卡| 国产精品一区在线| 波多野结衣一区二区三区 | 国产一区二区毛片| 成人亚洲精品久久久久软件| 成人国产免费视频| 欧美影院精品一区| 91精品麻豆日日躁夜夜躁| 久久综合成人精品亚洲另类欧美| 精品对白一区国产伦| 国产欧美日产一区| 亚洲自拍偷拍欧美| 久久疯狂做爰流白浆xx| 春色校园综合激情亚洲| 欧美亚洲一区二区在线| 日韩一区二区三区免费观看| 国产欧美日本一区二区三区| 一区二区三区中文字幕电影| 日韩和欧美的一区| 成人性生交大合| 51精品久久久久久久蜜臀| 国产午夜亚洲精品羞羞网站| 亚洲欧美另类小说视频| 毛片不卡一区二区| 色狠狠一区二区三区香蕉| 欧美不卡在线视频| 亚洲精品欧美综合四区| 精品在线免费视频| 色噜噜狠狠色综合欧洲selulu| 欧美一区二区播放| 亚洲男人的天堂在线aⅴ视频| 蜜臀久久99精品久久久久宅男| av亚洲精华国产精华精华| 91精品国产综合久久福利|