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

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

?? remanage.cpp

?? 編譯課程設計
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			if(find(endGather.begin(),endGather.end(),MiniDFA_EDGE[m].end)
				==endGather.end())
				endGather.push_back(MiniDFA_EDGE[m].end);
		}

		for(i=0;i<reachedState.size();i++)
		{
			if(find(startGather.begin(),startGather.end(),reachedState[i])
				==startGather.end()&&
				find(miniEndDFA.begin(),miniEndDFA.end(),reachedState[i])
				==miniEndDFA.end())	  	
			{
				for(int j=0;j<MiniDFA_EDGE.size();j++)
				{
					if(MiniDFA_EDGE[j].end==reachedState[i])
					{
						DFA_EDGE.erase(MiniDFA_EDGE.begin()+j);
						j--;
					}
				}
				reachedState.erase(reachedState.begin()+i);
				break;
			}
		}
	}
	/*****************************end*******************************/
	
	/******************Update the input char************************/
	for(i=0;i<MiniDFA_EDGE.size();i++)
	{
		if(find(miniDFAInput.begin(),miniDFAInput.end(),MiniDFA_EDGE[i].input)
			==miniDFAInput.end())
			miniDFAInput.push_back(MiniDFA_EDGE[i].input);
	}
	/*****************************end*******************************/

	/****************Update non end state of DFA*******************/
	miniNonEndDFA.clear();
	for(i=0;i<MiniDFA_EDGE.size();i++)
	{
		if(find(miniEndDFA.begin(),miniEndDFA.end(),MiniDFA_EDGE[i].start)
			==miniEndDFA.end()&&
			find(miniNonEndDFA.begin(),miniNonEndDFA.end(),MiniDFA_EDGE[i].start)
			==miniNonEndDFA.end())
			miniNonEndDFA.push_back(MiniDFA_EDGE[i].start);
		if(find(miniEndDFA.begin(),miniEndDFA.end(),MiniDFA_EDGE[i].end)
			==miniEndDFA.end()&&
			find(miniNonEndDFA.begin(),miniNonEndDFA.end(),MiniDFA_EDGE[i].end)
			==miniNonEndDFA.end())
			miniNonEndDFA.push_back(MiniDFA_EDGE[i].end);		
	}
	/*****************************end*******************************/

}
int REManage::MovdDFA(int start,char input)
{
	for(int i=0;i<DFA_EDGE.size();i++)
	{
		if(DFA_EDGE[i].start==start
			&&DFA_EDGE[i].input==input)
			return DFA_EDGE[i].end;
	}

	return -1;
}

int REManage::FindGather(int end,vector<vector<int> > gather)
{
	if(end<0)
		return end;
	for(int i=0;i<gather.size();i++)
		if(find(gather[i].begin(),gather[i].end(),end)!=gather[i].end())
		return i;
	return -1;
}

/*合并DFA中的等價狀態*/
/*
===================
輸入:
	  DFAInput
	  startDFA
	  endDFA
	  nonEndDFA
	  DFA_EDGE
===================
輸出:
	  miniStartDFA
	  miniEndDFA
      miniNonEndDFA
	  MiniDFA_EDGE
	  miniStateGather	  
===================
*/
void REManage::CombineEquality()
{
	vector<vector<int> > completeStateGather;
	vector<vector<int> > currentStateGather;

	completeStateGather.clear();
	currentStateGather.clear();

	completeStateGather.push_back(nonEndDFA);
	completeStateGather.push_back(endDFA);
	
	int initSize=completeStateGather.size()-1;
	bool seperate=true;
	
	/*********Beginning of generate the new gather**************/

	for(int allState=0;allState<completeStateGather.size();allState++)
	{
		initSize=completeStateGather.size()-1;

		while(completeStateGather.size()>initSize)
		{
			vector<int> testState=completeStateGather[allState];
			initSize=completeStateGather.size();				
			if(testState.size()==1)
				continue;
			for(int i=0;i<DFAInput.size();i++)
			{	
				seperate=true;
				currentStateGather.clear();
				currentStateGather.resize(completeStateGather.size()+1);

				for(int j=0;j<testState.size();j++)
				{
					int gather=FindGather(
						MovdDFA(testState[j],DFAInput[i]),
						completeStateGather);
					currentStateGather[gather+1].push_back(testState[j]);
				}
				
				for(j=0;j<currentStateGather.size();j++)
				{
					if(currentStateGather[j].size()==testState.size())
					{
						seperate=false;
						break;
					}
				}
				
				if(seperate)
				{
					completeStateGather.erase(completeStateGather.begin()+allState);			
					for(j=0;j<currentStateGather.size();j++)
					{
						if(currentStateGather[j].size()>0)
						{
							completeStateGather.push_back(currentStateGather[j]);
						}
					}
					break;
				}
					
			}
		}	
	}
	sort(completeStateGather.begin(),completeStateGather.end());
	/************************End***************************/

	miniStateGather=completeStateGather;

	/********Generate the edge of the Minimum DFA**********/

	for(int i=0;i<DFA_EDGE.size();i++)
	{
		EDGE temp;
		temp.input=DFA_EDGE[i].input;
		temp.start=completeStateGather[FindGather(DFA_EDGE[i].start,completeStateGather)][0];
		temp.end=completeStateGather[FindGather(DFA_EDGE[i].end,completeStateGather)][0];
		
		if(find(MiniDFA_EDGE.begin(),MiniDFA_EDGE.end(),temp)==MiniDFA_EDGE.end())
			MiniDFA_EDGE.push_back(temp);
	}
	/***************************End************************/
	
	/************Get start state and end state gather of MiniDFA*******/
	for(i=0;i<miniStateGather.size();i++)
	{
		if(find(miniStateGather[i].begin(),miniStateGather[i].end(),startDFA)
			!=miniStateGather[i].end())
			miniStartDFA=miniStateGather[i][0];

		for(int j=0;j<miniStateGather[i].size();j++)
		{
			if(find(endDFA.begin(),endDFA.end(),miniStateGather[i][j])
				!=endDFA.end())
			{
				if(find(miniEndDFA.begin(),miniEndDFA.end(),miniStateGather[i][0])
					==miniEndDFA.end())
					miniEndDFA.push_back(miniStateGather[i][0]);
			}
			else
			{
				if(find(miniNonEndDFA.begin(),miniNonEndDFA.end(),miniStateGather[i][0])
					==miniNonEndDFA.end())
					miniNonEndDFA.push_back(miniStateGather[i][0]);
			}
		}
	}
	/*****************************End******************************/

}

/*最小化DFA*/
void REManage::MinimizeDFA()
{
	this->CombineEquality();
	this->RemoveFutility();
}
void REManage::clear()
{
	NFA_EDGE.clear();
	NFAInput.clear();
	startNFA.clear();
	endNFA.clear();
	
	DFAInput.clear();
	endDFA.clear();
	nonEndDFA.clear();
	DFA_EDGE.clear();
	DFAStateGather.clear();

	miniDFAInput.clear();
	miniEndDFA.clear();
	miniNonEndDFA.clear();
	MiniDFA_EDGE.clear();
    miniStateGather.clear();
}
//設置正規式
void REManage::setRE(string re)
{
	this->state=1;
	this->clear();
	this->re=re;
	this->isREUpdate=true;
}

//設置NFA
void REManage::setNFA(vector<EDGE> edge,vector<int> start,vector<int> end)
{
	//對輸入與輸出清空
	this->clear();
	this->state=1;
	this->NFA_EDGE=edge;
	this->startNFA=start;
	this->endNFA=end;

	for(int i=0;i<edge.size();i++)
	{
		if(find(NFAInput.begin(),NFAInput.end(),edge[i].input)
			==NFAInput.end())
			NFAInput.push_back(edge[i].input);
	}

	this->isNFAUpdate=true;
}

//設置DFA
void REManage::setDFA(vector<EDGE> edge,int start,vector<int> end)
{
	//對輸入與輸出清空
	this->clear();
	this->state=1;
	this->DFA_EDGE=edge;
	this->startDFA=start;
	this->endDFA=end;

	for(int i=0;i<edge.size();i++)
	{
		if(find(DFAInput.begin(),DFAInput.end(),edge[i].input)
			==DFAInput.end())
			DFAInput.push_back(edge[i].input);
		if(find(endDFA.begin(),endDFA.end(),edge[i].start)
			==endDFA.end()&&
			find(nonEndDFA.begin(),nonEndDFA.end(),edge[i].start)
			==nonEndDFA.end())
			nonEndDFA.push_back(edge[i].start);
		if(find(endDFA.begin(),endDFA.end(),edge[i].end)
			==endDFA.end()&&
			find(nonEndDFA.begin(),nonEndDFA.end(),edge[i].end)
			==nonEndDFA.end())
			nonEndDFA.push_back(edge[i].end);
	}
	this->isDFAUpdate=true;
}

void REManage::Process()
{
	if(isREUpdate)
	{
		this->ProcessREToNFA();
		this->NFAInput=this->REInput;
		this->DFAInput=this->NFAInput;
		this->ProcessNFAToDFA();
		this->MinimizeDFA();
	}	
	else if(isNFAUpdate)
	{
		this->DFAInput=this->NFAInput;
		this->ProcessNFAToDFA();
		this->MinimizeDFA();
	}
	else if(isDFAUpdate)
	{
		this->MinimizeDFA();
	}

	this->OutputResult();

	HWND note=FindWindow("notepad",NULL);
	::SendMessage(note,WM_CLOSE,0,0);
	ShellExecute(NULL,"open","Result.txt",NULL,NULL,SW_SHOWNORMAL);

	this->isREUpdate=false;
	this->isNFAUpdate=false;
	this->isDFAUpdate=false;
}
void REManage::OutputResult()
{
	out.close();
	out.open("Result.txt");
	out<<"=================Start=================="<<endl;
	out<<endl;
	if(isREUpdate)
	{
		out<<"正規式:"<<this->re<<endl;
		out<<"正規式輸入符:";
		for(int i=0;i<this->REInput.size();i++)
			out<<this->REInput[i]<<" ";
		out<<endl;

		out<<"==================NFA==================="<<endl;
		out<<"初態集:";
		for(i=0;i<this->startNFA.size();i++)
			out<<this->startNFA[i]<<" ";
		out<<endl;
		out<<"終態集:";
		for(i=0;i<this->endNFA.size();i++)
			out<<this->endNFA[i]<<" ";
		out<<endl;

		out<<"NFA的邊集:"<<endl;
		for(i=0;i<this->NFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->NFA_EDGE[i].start<<"  "
				<<this->NFA_EDGE[i].input<<"  "
				<<this->NFA_EDGE[i].end<<endl;
		}

		out<<endl;

		out<<"==================DFA==================="<<endl;
		out<<"初態:"<<startDFA<<endl;
		out<<"終態集:";
		for(i=0;i<this->endDFA.size();i++)
			out<<this->endDFA[i]<<" ";
		out<<endl;

		out<<"DFA的邊集:"<<endl;
		for(i=0;i<this->DFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->DFA_EDGE[i].start<<"  "
				<<this->DFA_EDGE[i].input<<"  "
				<<this->DFA_EDGE[i].end<<endl;
		}

		out<<endl;

		out<<"==============最小化的DFA==============="<<endl;
		out<<"初態:"<<miniStartDFA<<endl;
		out<<"終態集:";
		for(i=0;i<this->miniEndDFA.size();i++)
			out<<this->miniEndDFA[i]<<" ";
		out<<endl;

		out<<"最小化DFA的邊集:"<<endl;
		for(i=0;i<this->MiniDFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->MiniDFA_EDGE[i].start<<"  "
				<<this->MiniDFA_EDGE[i].input<<"  "
				<<this->MiniDFA_EDGE[i].end<<endl;
		}

	}	
	else if(isNFAUpdate)
	{
		out<<"==================DFA==================="<<endl;
		out<<"初態:"<<startDFA<<endl;
		out<<"終態集:";
		for(int i=0;i<this->endDFA.size();i++)
			out<<this->endDFA[i]<<" ";
		out<<endl;

		out<<"DFA的邊集:"<<endl;
		for(i=0;i<this->DFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->DFA_EDGE[i].start<<"  "
				<<this->DFA_EDGE[i].input<<"  "
				<<this->DFA_EDGE[i].end<<endl;
		}
		out<<endl;
		out<<"==============最小化的DFA==============="<<endl;
		out<<"初態:"<<miniStartDFA<<endl;
		out<<"終態集:";
		for(i=0;i<this->miniEndDFA.size();i++)
			out<<this->miniEndDFA[i]<<" ";
		out<<endl;

		out<<endl;

		out<<"最小化DFA的邊集:"<<endl;
		for(i=0;i<this->MiniDFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->MiniDFA_EDGE[i].start<<"  "
				<<this->MiniDFA_EDGE[i].input<<"  "
				<<this->MiniDFA_EDGE[i].end<<endl;
		}
	}
	else if(isDFAUpdate)
	{
		out<<"==============最小化的DFA==============="<<endl;
		out<<"初態:"<<miniStartDFA<<endl;
		out<<"終態集:";
		for(int i=0;i<this->miniEndDFA.size();i++)
			out<<this->miniEndDFA[i]<<" ";
		out<<endl;

		out<<"最小化DFA的邊集:"<<endl;
		for(i=0;i<this->MiniDFA_EDGE.size();i++)
		{
			out<<"Index "<<i<<": ";
			out<<this->MiniDFA_EDGE[i].start<<"  "
				<<this->MiniDFA_EDGE[i].input<<"  "
				<<this->MiniDFA_EDGE[i].end<<endl;
		}
	}
	out<<endl;
	out<<"==================End==================="<<endl;
}
bool REManage::TestString(string str)
{
	int currentState,nextState;
	nextState=miniStartDFA;
	
	
	for(int i=0;i<str.size();i++)
	{
		currentState=nextState;
		for(int j=0;j<MiniDFA_EDGE.size();j++)
			if(MiniDFA_EDGE[j].start==currentState&&
				MiniDFA_EDGE[j].input==str[i])
			{
				nextState=MiniDFA_EDGE[j].end;
				break;
			}
		if(j==MiniDFA_EDGE.size())
			break;
	}
	if(i=str.size()&&
		find(miniEndDFA.begin(),miniEndDFA.end(),nextState)!=miniEndDFA.end())
		return true;
	else
		return false;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一二区| 欧美蜜桃一区二区三区| 日韩一区中文字幕| 欧美亚洲图片小说| 国产精品123区| 日韩av电影一区| 一级日本不卡的影视| 久久综合国产精品| 欧美日韩中文国产| 石原莉奈在线亚洲三区| 亚洲日本成人在线观看| 色94色欧美sute亚洲线路一久| 亚洲视频一区在线| 精品国内片67194| 国产成人高清在线| 婷婷综合另类小说色区| 日韩欧美一级在线播放| 精品一区二区三区视频在线观看 | 久久丁香综合五月国产三级网站| 国产精品免费av| 精品捆绑美女sm三区| 欧美色图免费看| 色综合久久中文字幕| 国产盗摄一区二区| 精品一区二区影视| 五月激情丁香一区二区三区| 亚洲男人的天堂在线观看| 2014亚洲片线观看视频免费| 3d动漫精品啪啪一区二区竹菊| 91成人在线精品| 91福利视频久久久久| 成人中文字幕在线| 国产精品一二二区| 麻豆国产91在线播放| 日本欧美一区二区| 一二三区精品福利视频| 亚洲天堂久久久久久久| 亚洲三级视频在线观看| 久久久精品蜜桃| 精品国产免费一区二区三区香蕉| 制服视频三区第一页精品| 777午夜精品免费视频| 6080午夜不卡| 日韩美女天天操| 久久久久久免费网| 欧美极品美女视频| 国产欧美日韩在线| 国产精品沙发午睡系列990531| 国产精品久线在线观看| 中文字幕亚洲综合久久菠萝蜜| 69av一区二区三区| 26uuu亚洲| 国产精品乱码人人做人人爱| 亚洲欧美经典视频| 午夜精品免费在线观看| 麻豆精品一二三| 国产一区二区精品久久99| 国产精品夜夜嗨| 精品一区二区三区在线观看国产 | 日韩欧美视频在线| 日韩午夜激情av| 日韩精品一区二区三区中文不卡| 日韩三级在线观看| 欧美大片免费久久精品三p| 日韩欧美国产不卡| 欧美日韩国产综合一区二区 | 日韩欧美在线一区二区三区| 在线观看不卡视频| 51久久夜色精品国产麻豆| 欧美三级蜜桃2在线观看| 色综合久久久网| 91丨porny丨蝌蚪视频| 欧美色综合网站| 久久午夜老司机| 亚洲免费观看视频| 麻豆成人免费电影| 成人精品一区二区三区四区| 欧美视频在线不卡| 久久久99免费| 亚洲欧美日韩在线| 久久精品国产在热久久| 99久久综合色| 欧美一区三区四区| 国产精品国产三级国产普通话蜜臀| 午夜久久久影院| 国产69精品久久久久毛片 | 国产成人h网站| 欧洲av在线精品| 精品成人在线观看| 亚洲黄色在线视频| 国产一区二区三区av电影| 91在线你懂得| 日韩欧美国产午夜精品| 亚洲激情自拍偷拍| 国产成人精品亚洲777人妖| 99热精品国产| 国产亚洲福利社区一区| 午夜视频在线观看一区二区三区 | 欧美影片第一页| 欧美大片在线观看| 亚洲综合男人的天堂| 国产精品一二二区| 欧美一区二区三区成人| 亚洲欧美日韩系列| 国产黑丝在线一区二区三区| 91国产免费看| ●精品国产综合乱码久久久久| 伦理电影国产精品| 欧美另类一区二区三区| 国产精品麻豆欧美日韩ww| 久久99精品一区二区三区三区| 欧美自拍偷拍午夜视频| 国产精品日韩精品欧美在线| 麻豆国产精品官网| 欧美色视频在线| 国产色一区二区| 韩国欧美国产1区| 欧美性xxxxxx少妇| 亚洲色图视频网站| 成人精品视频.| 精品国精品自拍自在线| 视频在线观看一区二区三区| 色婷婷精品久久二区二区蜜臂av | 人禽交欧美网站| 欧美性猛交xxxxxx富婆| 国产精品久久久99| 国产99久久久久| 国产亚洲午夜高清国产拍精品| 麻豆专区一区二区三区四区五区| 日本韩国一区二区三区| 国产精品久久免费看| 成人精品小蝌蚪| 午夜av一区二区| 欧美三级一区二区| 午夜影院久久久| 538在线一区二区精品国产| 丝袜美腿亚洲一区二区图片| 欧美日韩国产三级| 日韩精品久久理论片| 91精品国产麻豆国产自产在线 | 亚洲精品在线免费观看视频| 青青草91视频| 精品国产自在久精品国产| 国产一区二区在线视频| 国产三级一区二区| 成人av免费观看| 亚洲色图在线播放| 欧美系列一区二区| 日韩精品福利网| 精品日韩欧美在线| 国产成人无遮挡在线视频| 中文字幕精品一区二区精品绿巨人| www.久久精品| 一区二区国产盗摄色噜噜| 欧美日韩电影一区| 麻豆91精品视频| 日本一区二区高清| 91啪在线观看| 视频在线观看一区二区三区| 五月开心婷婷久久| 欧美人妖巨大在线| 蜜桃精品在线观看| 国产偷国产偷亚洲高清人白洁| 成人免费电影视频| 亚洲一区二区三区激情| 日韩一区二区免费电影| 国产高清不卡一区二区| 国产精品乱人伦| 欧美视频一区二区三区在线观看| 青青草97国产精品免费观看 | 99久久精品国产导航| 欧美日韩激情一区| 亚洲三级在线看| 国产精品一区二区在线播放 | 麻豆精品国产91久久久久久| 91免费看片在线观看| 国产校园另类小说区| 久久精品国产久精国产| 欧美日韩一区二区在线视频| 中文字幕一区视频| 国产91精品精华液一区二区三区| 日韩三级.com| 三级成人在线视频| 欧美亚洲禁片免费| 亚洲男人电影天堂| aa级大片欧美| 亚洲视频在线一区| a级精品国产片在线观看| 久久久精品天堂| 国产一区二区三区四| 精品日韩一区二区三区 | 91精品国产综合久久福利| 一区二区三区欧美| 色综合天天综合给合国产| 国产精品国产三级国产普通话三级| 国产一区高清在线| 欧美成人猛片aaaaaaa| 美女高潮久久久| 日韩精品在线看片z| 久久精品国产精品青草|