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

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

?? compile_work2.cpp

?? 正則式到有窮自動機.VC++6.0環境下開發.
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	   Si++;
   }
   else if (statement[Si]==')')
   {
    top--;
	while (stack[top]!='(')
	{
      ReversePolishString[RPSi]=stack[top];
      top--;
      RPSi++;
	}
	Si++;
   }
   else if (statement[Si]=='*')
   {    
	top--;
	while(stack[top]=='*' && top>=0)
	{
      ReversePolishString[RPSi]=stack[top];
      top--;
      RPSi++;
	}
	top++;
	stack[top]=statement[Si];
	Si++;
	top++;
   }
   else if (statement[Si]=='|')
   {
    top--;
	while((stack[top]=='*' || stack[top]== '+' || stack[top]== '|') && top>=0)
	{
      ReversePolishString[RPSi]=stack[top];
      top--;
      RPSi++;
	}
	top++;
	stack[top]=statement[Si];
	Si++;
	top++;
   }
  }
  top--;
  while(top>=0) //將剩余操作符號串接到{0,1}*后邊   
  {
   ReversePolishString[RPSi]=stack[top];
   top--;
   RPSi++;
  }
  ReversePolishString[RPSi]='\0';
}
////////////////////    End Regular==>NFA	//////////////////////////////
//////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////
//////////////////   Begin NFA==>DFA  ////////////////////////////////////

int c=0;//全局變量
//temp
void line(int s[],int n)//排序
{
	for(int i=1;i<n;i++)
		for(int j=i;(j>0)&&(s[j]<s[j-1]);j--)
		{
			int temp=s[j];
			s[j]=s[j-1];
			s[j-1]=temp;
		}
}

void out(int s[],int &n)//檢查重復
{
	for(int i=0;i<n-1;i++)
		if(s[i]==s[i+1])
		{
			for(int j=i;j<n-1;j++) s[j]=s[j+1];
			n--;
			i--;
		}
}

template <class Elem> class stack
{
	private:
		int size;
		int top;
		Elem *listArray;
	public:
		stack(int sz=100)
		{	size=sz;top=0;listArray=new Elem[sz];}
		~stack()
		{	delete []listArray;}
		bool push(const Elem& item)
		{
			if(top==size) return false;
			else {listArray[top++]=item;return true;}
		}
		bool pop(Elem& it)
		{
			if(top==0) return false;
			else {it=listArray[--top];return true;}
		}
		int length() const {return top;}
};

void closure(int s[][100],int& n,int z[],int n0,int sub[],int& subn)//數組的閉包
{
	stack<int>t;
	int i=0;
	for(int m=0;m<n0;m++)
	{
		t.push(z[m]);
		sub[i++]=z[m];
	}
	int a,mark=0;
	while(t.length())
	{
		t.pop(a);
		for(int j=0;j<n;j++)
			if(s[a][j]==2)
			{
				mark=0;
				for(int k=0;k<i;k++) if(sub[k]==j) mark=1;
				if(mark==0)
				{
					sub[i++]=j;
					t.push(j);
				}
			}
	}
	subn=i;//閉包的個數
	line(sub,i);//排序
}

void closure(int s[][100],int& n,int z,int sub[],int& subn)//初始狀態的閉包
{
	stack<int>t;
	int i=0;
	t.push(z);
	sub[i++]=z;
	int a,mark=0;
	while(t.length ())
	{
		t.pop(a);
		for(int j=0;j<n;j++)
			if(s[a][j]==2)
			{
				mark=0;
				for(int k=0;k<i;k++) if(sub[k]==j) mark=1;
				if(mark==0)
				{
					sub[i++]=j;
					t.push(j);
				}
			}
	}
	subn=i;
	line(sub,i);
}

class DFA//DFA中的狀態集合
{
	public:
		void add(int S[],int N)
		{
			for(int i=0;i<N;i++) s[i]=S[i];//初始化
			n=N;
			c++;
		}
		int s[100];
		int n;
		int next0;//零的出邊
		int next1;//一的出邊
};

bool eq(DFA a,DFA b)
{
	if(a.n!=b.n) return false;
	else
	{
		for(int i=0;i<a.n;i++) if(a.s[i]!=b.s[i]) return false;
	}
	return true;
}
	
////////////////////      End NFA==>DFA   	//////////////////////////////
//////////////////////////////////////////////////////////////////////////

void main()
{
    char statement[25], ReversePolishString[25];
    cout<<"請輸入正則式( 注意對單個輸入有*操作的時候要有$合成,比如求0*,要有($0)* ): "<<endl;
    cin>>statement;
    ToReversePolish(statement,ReversePolishString);
    cout<<ReversePolishString<<endl<<endl;
    ToNFA(ReversePolishString);
	int s[100][100];
	cout<<endl<<"****** NFA=====>DFA ******"<<endl;
	int n=1;
    for(int m=0;m<relationi;m++)  //求nfa中狀態數目
	{
		if(n<=relation[m].NextState)   n=relation[m].NextState;
	}
    n=n+1;    
	cout<<"轉化后NFA的狀態數目:"<<n;
	for(int i=0;i<n;i++)   //初始化邊
		for(int j=0;j<n;j++) s[i][j]=-1;
    for (i=0;i<relationi;i++)
	{
       int current=relation[i].CurrentState;
       int next  = relation[i].NextState;
       if (relation[i].TransitionElement=='$')
            s[current][next]=2; 
       else if(relation[i].TransitionElement=='0')
	        s[current][next]=0;
       else s[current][next]=1;
	} 

	int Start=0; 
	int *End=new int[1];
	End[0]=n;
	
	int sub[100],subn,tt[100],j,k,l,w=0,sign;
	
	
	closure(s,n,Start,sub,subn);//初始狀態的閉包
	
	DFA *dfa=new DFA[100],temp,temp2;//DFA的狀態數組以及兩個對象
	
	for(i=0;i<100;i++) 
	dfa[i].next0=dfa[i].next1=-1;
	dfa[c].add(sub,subn);// C:全局變量,初始值為零
	
	stack<DFA>t;
	t.push(dfa[0]);//初始狀態的閉包入棧
	while(t.length())
	{
		t.pop(temp);
		for(i=0;i<2;i++)
		{
			for(j=0;j<temp.n;j++)//temp.n:DFA狀態的數目
				for(k=0;k<n;k++)//對每一個輸入的狀態進行檢查(零或一)
					if(s[(temp.s[j])][k]==i)
					{
						tt[w++]=k;//求MOVE
						continue;
					}
			closure(s,n,tt,w,sub,subn);//對MOVE作閉包
			temp2.add(sub,subn);
			c--;
			for(l=0;!(eq(temp2,dfa[l]))&&(l<c);l++);//DFA數組中檢查是否有重復的項
			if(l==c) sign=0;
			else sign=1;
			if(sign==0)
			{
				dfa[c].add(sub,subn);//生成一個新的DFA狀態集合
				t.push(dfa[c-1]);//將另一個
			}
			for(int m=0;!(eq(temp,dfa[m]));m++);
			if((i==0)&&(sign==1)) dfa[m].next0=l;
			if((i==1)&&(sign==1)) dfa[m].next1=l;
			if((i==0)&&(sign==0)) dfa[m].next0=c-1;
			if((i==1)&&(sign==0)) dfa[m].next1=c-1;
			w=0;		
		}
	}
    cout<<endl;
//	cout<<"*************************************************************************"<<endl<<endl;
////////
	cout<<"1.狀態的集合({}內的為nfa中的狀態):"<<endl;
	for(i=0;i<c;i++)
	{
		if(dfa[i].n>0)
        {
		cout<<"DFA狀態"<<i<<":"<<"{ ";
		for(j=0;j<dfa[i].n;j++) cout<<dfa[i].s[j]<<" ";
		cout<<"}"<<endl;
		}
	}
	cout<<endl;
////////
	cout<<"2.輸入符號集合:"<<endl<<"{ 0 1 }"<<endl<<endl;
////////
	cout<<"3.關系:"<<endl;
	cout<<"狀態\t"<<"輸入符號\t"<<endl<<'\t'<<"0\t"<<"1\t"<<endl;
	for(i=0;i<c;i++)
	{
	  if(dfa[i].n>0)
	  {
		cout<<i<<'\t';
		if(dfa[i].next0!=-1) 
          if(dfa[dfa[i].next0].n>0) 
			 cout<<dfa[i].next0<<'\t';
		  else cout<<"—"<<'\t';
		else cout<<"無\t";
		if(dfa[i].next1!=-1)
          if(dfa[dfa[i].next1].n>0)
			 cout<<dfa[i].next1<<endl;
		  else cout<<"—"<<'\t'<<endl;
		else cout<<"無"<<endl;
	  }
	}
	cout<<endl;
///////
	cout<<"4.開始狀態:"<<endl<<"{ ";
	cout<<Start<<" ";
	cout<<"}"<<endl<<endl;
///////
	cout<<"5.終止狀態:"<<endl<<"{ ";
	l=0;
	for(i=0;i<c;i++)
	{
		for(j=0;j<dfa[i].n;j++)
		{if(dfa[i].s[j]==End[0]-1)  tt[l++]=i;}
	}	
	line(tt,l);
	out(tt,l);
	for(i=0;i<l;i++) cout<<tt[i]<<" ";
	cout<<"}"<<endl;
///////
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲妇女屁股眼交7| 欧美电视剧在线看免费| 亚洲免费av观看| 成人美女视频在线看| 欧美激情一区二区三区全黄 | 自拍偷拍国产精品| 91黄色免费版| 日韩国产欧美视频| 久久亚洲综合av| 不卡视频一二三四| 亚洲第一精品在线| 26uuu色噜噜精品一区二区| 国产成人综合精品三级| 亚洲人一二三区| 777久久久精品| 国产精品一区免费视频| 亚洲欧美日韩中文字幕一区二区三区| 在线观看视频一区二区欧美日韩| 日韩高清不卡在线| 精品三级av在线| 99久久婷婷国产综合精品电影| 亚洲午夜久久久久| 精品久久一区二区| 91蝌蚪国产九色| 人人超碰91尤物精品国产| 国产欧美日韩精品在线| 色综合久久66| 久久99热这里只有精品| 一区二区三区色| 精品黑人一区二区三区久久| 91在线云播放| 久久99精品久久久久久动态图 | 亚洲成av人片在www色猫咪| 亚洲精品在线一区二区| 色呦呦国产精品| 国产精品综合久久| 日韩精品视频网站| 中文字幕在线观看一区二区| 欧美一区二区三区不卡| 色呦呦一区二区三区| 国产精品一区二区91| 午夜视频一区在线观看| 中文字幕一区在线观看| 久久久久久免费| 3d动漫精品啪啪| 欧美在线视频全部完| 成人免费av资源| 国产真实乱子伦精品视频| 亚洲国产精品一区二区尤物区| 国产精品无遮挡| 精品不卡在线视频| 欧美一区二区日韩| 欧美影院午夜播放| www.av精品| 国产91精品入口| 激情小说欧美图片| 美女任你摸久久| 午夜影视日本亚洲欧洲精品| 亚洲欧美激情小说另类| 国产精品视频免费| 国产人成亚洲第一网站在线播放| 欧美电影免费观看高清完整版| 欧美激情在线看| 欧美精品日韩精品| 在线欧美小视频| 色偷偷一区二区三区| 91污在线观看| 99免费精品视频| 成人性生交大合| 丰满放荡岳乱妇91ww| 国产精品一区免费在线观看| 国产精品99久| 粉嫩aⅴ一区二区三区四区 | 亚洲精品国产无套在线观| 中文字幕一区二区三区av| 中文字幕在线视频一区| 中文字幕一区二区三区四区| 国产精品国产三级国产三级人妇| 国产精品电影一区二区三区| 国产精品网站导航| 综合分类小说区另类春色亚洲小说欧美 | 韩国欧美一区二区| 精品亚洲国产成人av制服丝袜| 美女看a上一区| 日韩欧美的一区| 亚洲国产wwwccc36天堂| 怡红院av一区二区三区| 亚洲欧美日韩国产手机在线| 一区二区久久久| 亚洲电影欧美电影有声小说| 五月天视频一区| 国产在线精品不卡| 高清成人免费视频| 在线免费av一区| 4438亚洲最大| 国产欧美日韩三区| 亚洲美女免费在线| 日韩国产在线观看| 国产成人无遮挡在线视频| av一本久道久久综合久久鬼色| 91日韩在线专区| 欧美一卡二卡三卡四卡| 国产日韩欧美a| 亚洲精品欧美综合四区| 日本在线不卡视频| 大桥未久av一区二区三区中文| 一本久道久久综合中文字幕| 91麻豆精品国产91久久久更新时间 | 亚洲h在线观看| 韩国中文字幕2020精品| 99精品国产99久久久久久白柏| 在线观看日韩电影| 精品国产一区二区国模嫣然| 国产精品国产三级国产普通话三级 | 亚洲视频免费观看| 日韩一区欧美二区| 国产精品一区二区久激情瑜伽| 在线视频中文字幕一区二区| 精品免费99久久| 一区二区三区在线视频观看58| 精品一区中文字幕| 91在线视频免费观看| 欧美成人精品3d动漫h| 亚洲欧美日韩电影| 精品伊人久久久久7777人| 日本韩国欧美一区二区三区| 久久一区二区视频| 午夜免费欧美电影| 不卡的av电影在线观看| 精品日韩在线观看| 午夜一区二区三区在线观看| 成人网页在线观看| 日韩一区二区三区四区| 亚洲一区免费观看| www.亚洲精品| 久久久亚洲精品石原莉奈| 亚洲成人久久影院| 99久久99久久精品免费观看| 久久久久久久综合日本| 热久久国产精品| 欧美视频一区二区在线观看| 国产精品嫩草影院com| 久久精品国产99久久6| 欧美日韩精品一区二区天天拍小说 | 日韩欧美亚洲一区二区| 亚洲国产美国国产综合一区二区| 国产98色在线|日韩| 日韩欧美激情四射| 亚洲大片一区二区三区| 91麻豆国产福利精品| 欧美高清在线一区二区| 国产一区二三区| 精品日韩一区二区三区| 免费成人美女在线观看.| 欧美日韩在线综合| 亚洲综合在线免费观看| 91免费观看视频在线| 中文字幕在线一区免费| www.综合网.com| 中文字幕色av一区二区三区| 国产成人综合亚洲91猫咪| 久久精品人人做人人爽人人| 狠狠色丁香久久婷婷综合_中| 日韩欧美亚洲一区二区| 久久99久久久欧美国产| 欧美精品一区二区不卡 | 成人一级片在线观看| 久久免费国产精品| 国产精品原创巨作av| 国产网站一区二区三区| 成人免费va视频| 亚洲精品v日韩精品| 色婷婷综合久久久久中文| 亚洲在线一区二区三区| 欧美日韩亚州综合| 日日嗨av一区二区三区四区| 欧美一卡二卡在线| 国产精品99久久久久| 国产精品久久久久精k8| 91视频在线观看| 午夜亚洲国产au精品一区二区| 91精品国产91久久久久久最新毛片| 欧美aaa在线| 欧美国产精品一区二区三区| 91麻豆高清视频| 天天影视色香欲综合网老头| 精品成人免费观看| 91最新地址在线播放| 亚洲丶国产丶欧美一区二区三区| 日韩欧美视频一区| 丁香激情综合国产| 亚洲一区在线视频| 精品久久久久久久久久久久久久久久久| 韩日av一区二区| 亚洲美女少妇撒尿| 欧美电影精品一区二区| 91片在线免费观看| 蜜臀av性久久久久蜜臀aⅴ| 国产精品天天摸av网| 在线亚洲一区二区|