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

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

?? cmyview.cpp

?? 最小生成樹的具體程序
?? CPP
字號:
// CMyView.cpp : implementation of the CMyView class
//

#include "stdafx.h"
#include "最小生成樹.h"

#include <math.h>
#include "CMyDoc.h"
#include "CMyView.h"
#include "HelpDlg.h"
#include "AddDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyView

IMPLEMENT_DYNCREATE(CMyView, CView)

BEGIN_MESSAGE_MAP(CMyView, CView)
	//{{AFX_MSG_MAP(CMyView)
	ON_WM_LBUTTONUP()
	ON_COMMAND(ID_MENU_HANDLE, OnHandle)
	ON_COMMAND(ID_MENU_AUTO, OnAuto)
	ON_COMMAND(W_HELP, OnHelp)
	ON_WM_TIMER()
	ON_WM_CHAR()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_CANCELMODE()
	ON_WM_CAPTURECHANGED()
	ON_COMMAND(ID_ENDATA, OnEnData)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction

CMyView::CMyView()
{
	// TODO: add construction code here
	
	w_isstop = true;
	w_ishandle = true;

}

CMyView::~CMyView()
{
}

BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView drawing

void CMyView::OnDraw(CDC* pDC)
{
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	//當是第一次讀數(shù)據(jù)時,要初始化w_closedge這個輔助計算數(shù)組
	if(pDoc->w_isbegindraw){
		W_InitClosedge(pDoc);
		pDoc->w_isbegindraw = false;
	}

	int x1,y1,x2,y2,k;
	CString str;
	map<int,CPoint>::iterator pos;
	CPen pen[4], *oldpen;
	pen[0].CreatePen(PS_DASHDOT,1,RGB(0,0,0));//畫邊
	pen[1].CreatePen(PS_SOLID,2,RGB(0,0,0));//畫頂點圓
	pen[2].CreatePen(PS_SOLID,4,  RGB(0,255,0));//在圖中畫最小生成樹的線
	pen[3].CreatePen(PS_SOLID,4,RGB(255,0,155));//畫輸出結果的邊框




	//畫邊、邊的值
	oldpen = pDC->SelectObject(&pen[0]);
	for(int i=0; i<pDoc->w_vexnum; ++i)
		for(int j=0; j<pDoc->w_vexnum; ++j){
			if(pDoc->w_arcs[i][j]!=0 && pDoc->w_arcs[i][j]<MAXINT){
				pos = pDoc->w_vecmap.find(i);
				x1 = pos->second.x;
				y1 = pos->second.y;
				pDC->MoveTo(x1, y1);
				pos = pDoc->w_vecmap.find(j);
				x2 = pos->second.x;
				y2 = pos->second.y;
				pDC->LineTo(x2, y2);	
				str.Format("%d", pDoc->w_arcs[i][j]);
				pDC->TextOut( (x1+x2)/2-2,(y1+y2)/2-2,str);
			}
		}

	//畫頂點、頂點標簽
	pDC->SelectObject(&pen[1]);
	pos = pDoc->w_vecmap.begin();
	while(pos!=pDoc->w_vecmap.end()){
		pDC->Ellipse(pos->second.x-R0,pos->second.y-R0,pos->second.x+R0,pos->second.y+R0);
		pDC->TextOut(pos->second.x-3,pos->second.y-3,pDoc->w_vecname[pos->first]);
		++pos;
	}


	int x0 = 100,
		y0 = 580;
	//畫輸出結果的邊框
	pDC->SelectObject(&pen[3]);
	pDC->Rectangle(0,560,1000,630);
	pDC->Rectangle(0,0,XX-R1-20,560);

	//畫出頂點之間的關系
	k = 0;
	for(i=0; i<pDoc->w_vexnum; ++i)
		for(int j=0; j<pDoc->w_vexnum; ++j)
			if(pDoc->w_arcs[i][j]!=0 && pDoc->w_arcs[i][j]<MAXINT){
				str = "";
				str.Format("%s——%s    %d",pDoc->w_vecname[i],pDoc->w_vecname[j],pDoc->w_arcs[i][j]);
				pDC->TextOut(10,50+20*k,str);
				++k;
			}




	//畫已搜索到的最小生成樹
	pDC->SetTextColor(RGB(255,0,155));
	for(i=0; i<pDoc->w_vexnum; ++i){
		if(i!=w_start && w_closedge[i].value==0){
			//在圖中畫最小生成樹的線
			pDC->SelectObject(&pen[2]);
			pDC->MoveTo(pDoc->w_vecmap[i]);
			pDC->LineTo(pDoc->w_vecmap[w_closedge[i].vex]);
			//同時顯示此線的值
			pos = pDoc->w_vecmap.find(i);
			x1 = pos->second.x;
			y1 = pos->second.y;
			pDC->MoveTo(x1, y1);
			pos = pDoc->w_vecmap.find(w_closedge[i].vex);
			x2 = pos->second.x;
			y2 = pos->second.y;
			pDC->LineTo(x2, y2);
			str.Format("%d", pDoc->w_arcs[i][w_closedge[i].vex]);
			pDC->TextOut( (x1+x2)/2-2,(y1+y2)/2-2,str);

			//輸出找到的最小生成樹
			str = "——";
			pDC->TextOut(x0+i*100,y0, pDoc->w_vecname[i]);
			pDC->TextOut(x0+i*100+20,y0, str);
			pDC->TextOut(x0+i*100+50,y0, pDoc->w_vecname[w_closedge[i].vex]);		
		}
	}
	//畫數(shù)組


	pDC->SelectObject(oldpen);
}

/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics

#ifdef _DEBUG
void CMyView::AssertValid() const
{
	CView::AssertValid();
}

void CMyView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
	return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers

void CMyView::W_Nextspan() //尋找下一個點
{	
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	static int i=0;
	int max;
	int j,k=0;
	if(i<pDoc->w_vexnum){
		max=MAXINT;
		for(j=0; j<pDoc->w_vexnum; ++j)  {//求出下一個結點
			if(w_closedge[j].value>0 && max>w_closedge[j].value)
			{
				k=j;
				max=w_closedge[j].value;
			}
		}
		w_closedge[k].value=0;
		for(j=0;j<pDoc->w_vexnum; ++j){
			if(pDoc->w_arcs[k][j]<w_closedge[j].value){
				w_closedge[j].vex=k;
				w_closedge[j].value=pDoc->w_arcs[k][j];
			 }//if
		}//for

		++i;
	}//end_if
	else if(i == pDoc->w_vexnum) {//是又一次開始的話
		i = 0;
		pDoc->w_isbegindraw = true;	
	}
	else
		++i;

}

void CMyView::W_InitClosedge(CMyDoc* pDoc)//初始化w_closedge
{
	//初始化w_closedge
	w_start = 0;
	for(int i=0; i<pDoc->w_vexnum; ++i){
		w_closedge[i].vex = w_start;
		w_closedge[i].value = pDoc->w_arcs[w_start][i];
	}
}

void CMyView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	

	if(w_ishandle){	
		W_Nextspan(); //尋找下一個結點
		Invalidate();
		CView::OnLButtonUp(nFlags, point);
	}
}

void CMyView::OnHandle() //手動演示
{
	// TODO: Add your command handler code here
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	w_ishandle = true;
	pDoc->w_isbegindraw = true;

	KillTimer(1);
	
}

void CMyView::OnAuto() //自動演示
{
	// TODO: Add your command handler code here
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(!w_ishandle){
		w_isstop = !w_isstop;
	}
	else if(w_ishandle){
		
		w_ishandle = false;
		w_isstop = false;
		pDoc->w_isbegindraw = true;

		SetTimer(1,1000,NULL);
	}
	
}

void CMyView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if(!w_ishandle && !w_isstop){	
		W_Nextspan(); //尋找下一個結點
		Invalidate();
	}
	
	CView::OnTimer(nIDEvent);
}

void CMyView::OnHelp() //操作幫助
{
	// TODO: Add your command handler code here
	HelpDlg help;
	help.DoModal();
	
}


void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	CView::OnChar(nChar, nRepCnt, nFlags);
}

void CMyView::OnEnData() //輸入數(shù)據(jù)
{
	// TODO: Add your command handler code here
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	char token[10];
	CString str;
	int i = 0,
		j=0,
		k=0;

	int arcnum,
		vexnum;
	vector<CString> vecname;
	int arcs[10][10];
	
	AddDlg adddlg;
	if(adddlg.DoModal())
	{
		//修改圖的值
		arcnum = adddlg.m_arcnum;
		vexnum = adddlg.m_vexnum;

		if(arcnum<=0)
		{
			MessageBox("你輸入的頂點數(shù)錯誤!");
			return ;
		}

		//改變vecname
		for(i=0; i<vexnum; ++i)
		{
			k=0;
			if(adddlg.m_vnamestr.GetLength()<=j)
			{
				MessageBox("你輸入的頂點和頂點數(shù)有沖突!");
				return;
				
			}
			while(adddlg.m_vnamestr.GetLength()>j && adddlg.m_vnamestr[j]==' ') ++j;
			while(adddlg.m_vnamestr.GetLength()>j && adddlg.m_vnamestr[j]!=',' && adddlg.m_vnamestr[j]!=' ')
			{
				token[k++] = adddlg.m_vnamestr[j];
				++j;
			}
			token[k] = '\0';
			++j;
			if(k>0){
				++i;
				str = token;
				vecname.push_back(str);
			}
		}
/*
		//改變arc值
		j = 0;
		k = 0;
		while(j<adddlg.m_arcstr.GetLength()){
			while()
		}

*/
		//從新畫圖形
		pDoc->w_arcnum = arcnum;
		pDoc->w_vexnum = vexnum;

		pDoc->w_vecname.clear();
		pDoc->w_vecname.resize(vecname.size());
		copy(pDoc->w_vecname.begin(), pDoc->w_vecname.begin(), vecname.begin());

		for(i=0; i<10; ++i)
			for(j=0; j<10; ++j)
				pDoc->w_arcs[i][j] = arcs[i][j];

		int x,y;
		double pi = 3.1415926535;
		double a = 2*pi/vexnum;
		for(int i=0; i<vexnum; ++i){ 
			x = int(XX+R1*sin(i*a));
			y = int(YY-R1*cos(i*a));
			pDoc->w_vecmap.insert(pair<int,CPoint>(i,CPoint(x,y)));
		}


		w_isstop = true;
		w_ishandle = true;
		pDoc->w_isbegindraw = true;
	
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久国产97色综合| 亚洲成在人线在线播放| 夜夜精品视频一区二区| 三级欧美韩日大片在线看| 国产成人免费在线观看| 欧美精品视频www在线观看| 精品免费99久久| 香蕉加勒比综合久久| 成人性色生活片| 制服丝袜日韩国产| 亚洲色图丝袜美腿| 激情综合色播激情啊| 欧美日韩亚洲不卡| 日韩理论电影院| 成人午夜精品一区二区三区| 精品欧美一区二区久久| 一区二区三区视频在线观看| 成人免费高清视频| 久久综合999| 天天综合色天天综合| 在线免费一区三区| 亚洲欧洲av一区二区三区久久| 国产一区二区三区电影在线观看 | 国产精品久久久久久久蜜臀| 日本sm残虐另类| 欧美人与禽zozo性伦| 亚洲精品成人少妇| 99久久99久久综合| 国产精品色哟哟网站| 国产大陆亚洲精品国产| www国产精品av| 久久99国产精品久久99果冻传媒| 欧美色综合久久| 一区二区三区免费看视频| av资源站一区| 国产精品夫妻自拍| 91亚洲精品久久久蜜桃| 中文字幕在线免费不卡| 99视频有精品| 亚洲少妇最新在线视频| 一本一道久久a久久精品综合蜜臀| 日本一区二区三级电影在线观看| 国内不卡的二区三区中文字幕| 精品日本一线二线三线不卡| 国产精品主播直播| 欧美极品美女视频| 成人午夜私人影院| 亚洲天堂a在线| 欧美日韩免费一区二区三区| 亚洲成人动漫在线观看| 日韩欧美黄色影院| 国内不卡的二区三区中文字幕| 久久精品欧美一区二区三区不卡| 成人av在线影院| 一区二区三区欧美激情| 欧美一区二区三区四区高清| 免费在线观看成人| 久久精品日韩一区二区三区| 成人激情免费视频| 亚洲综合在线观看视频| 337p亚洲精品色噜噜噜| 国产福利精品一区| 亚洲精品国产成人久久av盗摄| 制服.丝袜.亚洲.中文.综合| 久久国产精品72免费观看| 国产女人18水真多18精品一级做| 91在线看国产| 日韩高清不卡一区| 国产亚洲欧美激情| 欧美性三三影院| 国产美女在线观看一区| 国产精品电影一区二区三区| 欧美另类变人与禽xxxxx| 久久精品国产免费看久久精品| 欧美国产精品一区| 欧美日韩在线精品一区二区三区激情| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产农村妇女毛片精品久久麻豆| 欧美图片一区二区三区| 国产一区二区美女诱惑| 亚洲黄色尤物视频| 国产亚洲精品bt天堂精选| 一本大道av一区二区在线播放| 久久精品二区亚洲w码| 综合久久给合久久狠狠狠97色| 日韩欧美一级在线播放| 色哟哟一区二区| 国产一区二区三区蝌蚪| 丝袜美腿成人在线| 18涩涩午夜精品.www| 日韩精品资源二区在线| 在线免费观看成人短视频| 国产不卡视频一区| 日韩av中文在线观看| 亚洲免费在线视频一区 二区| 日韩美女在线视频| 9191久久久久久久久久久| 91免费在线看| 成人av影院在线| 国产精品一二二区| 蜜臀精品久久久久久蜜臀 | 国产精品一卡二卡| 三级成人在线视频| 艳妇臀荡乳欲伦亚洲一区| 欧美韩国日本一区| 欧美大白屁股肥臀xxxxxx| 精品视频999| 在线亚洲人成电影网站色www| 从欧美一区二区三区| 国产一区二区精品在线观看| 美日韩一区二区三区| 亚洲成人av福利| 婷婷一区二区三区| 香蕉成人伊视频在线观看| 亚洲综合av网| 一区二区三区四区在线免费观看| 综合婷婷亚洲小说| 亚洲免费av网站| 亚洲精品欧美激情| 国产精品美女久久久久aⅴ | 欧美在线啊v一区| 色网站国产精品| 99re在线精品| 在线亚洲免费视频| 欧美日韩不卡视频| 欧美久久久久久久久| 欧美日韩你懂的| 日韩欧美资源站| 26uuu久久天堂性欧美| 久久综合九色综合97婷婷女人| 久久欧美中文字幕| 国产精品美女久久久久久久网站| 欧美激情一区二区三区蜜桃视频| 中文字幕国产一区| 亚洲乱码中文字幕| 日韩经典一区二区| 免费的成人av| 国产精品77777竹菊影视小说| 国产成人在线视频免费播放| 国产91高潮流白浆在线麻豆 | 免费欧美日韩国产三级电影| 美国av一区二区| 国产激情一区二区三区桃花岛亚洲| 国产麻豆一精品一av一免费| 国产aⅴ精品一区二区三区色成熟| 成人午夜精品在线| 欧美麻豆精品久久久久久| 91精品国产美女浴室洗澡无遮挡| 精品久久久久久久久久久久久久久久久 | 男女男精品视频| 国产一区在线观看视频| 不卡在线视频中文字幕| 在线视频亚洲一区| 日韩视频免费观看高清完整版在线观看| 2024国产精品| 一区二区视频在线| 久久99久久久久| 91色在线porny| 欧美成人免费网站| 一区二区三区国产| 久久er精品视频| 在线观看日韩国产| 久久综合久久综合亚洲| 综合久久久久久久| 国产综合成人久久大片91| 日本精品裸体写真集在线观看| 这里只有精品电影| 国产精品看片你懂得| 午夜欧美在线一二页| 成人av在线影院| 亚洲精品一区二区三区四区高清| 中文字幕日韩一区二区| 久久99热这里只有精品| 欧美日韩精品专区| 欧美国产精品v| 国模套图日韩精品一区二区| 欧美午夜在线观看| 亚洲欧洲另类国产综合| 另类小说视频一区二区| 欧美性感一区二区三区| 亚洲欧美影音先锋| 国产精品18久久久久久久网站| 欧美日本国产视频| 一区二区三区精品视频在线| 成人在线综合网| 日韩精品一区二区在线| 午夜精品一区二区三区三上悠亚| 不卡视频在线观看| 欧美激情一区二区三区全黄| 黄网站免费久久| 日韩欧美一级二级三级| 午夜久久久久久电影| 色呦呦一区二区三区| 中文在线免费一区三区高中清不卡| 日本不卡的三区四区五区| 欧美美女视频在线观看| 亚洲国产精品一区二区www在线 | 中文字幕日韩一区二区| 成人一区二区视频| 国产精品色眯眯|