⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 可达性矩阵划分.cpp

📁 这是一个可达性矩阵划分的程序
💻 CPP
字号:
//可达性矩阵划分的应用程序;
#include "iostream.h"
#include "iomanip.h"
void main()
{
	int n=0;
	int s,k,i,j,l;
	cout<<"请输入所要划分区域的单元数:"<<endl;
	cin>>n;
	int *C,*G;
	int **M=new int*[n+1];//申请n+1维的空间,从标号1开始;
	int **L=new int*[n+1];
	for(s=0;s<=n;s++)
	{
		M[s]=new int[n+1];
	}
	cout<<"请输入区域内单元可达性矩阵:"<<endl;
	for(s=1;s<=n;s++)        ///为M阵赋值
		for(k=1;k<=n;k++)
		{
			cin>>M[s][k];
		}

    for(s=0;s<=n;s++)
	{
		L[s]=new int[n+1];
	}
	for(s=1;s<=n;s++)//初始化L阵
		for(k=1;k<=n;k++)
		{
			L[s][k]=0;
		}
	G=new int[n+1];
	C=new int[n+1];
	cout<<"请输入各单元在区域中的初始顺序"<<endl;
	for(k=1;k<=n;k++)
	{
		cin>>C[k];
	}
	for(k=1;k<=n;k++)
	{
		G[k]=1;
	}
	int LE;
	int IP;
	for(LE=1;LE<=n;LE++)
	{
		IP=0;
		for(k=1;k<=n;k++)
		{
		    i=C[k];
			for(l=1;l<=n;l++)
			{
				j=C[l];
			    if(!(M[i][j]<=M[j][i]))
					break;
				else
					continue;
			}
			if(!(M[i][j]<=M[j][i]))///满足该条件即执行大循环,跳过剩下语句
				continue;
			IP=IP+1;
            L[LE][IP]=C[k];
			G[k]=-G[k];
		}
		int JP=0;
		for(k=1;k<=n;k++)
		{
			if(G[k]<0)
				continue;
			else
			{
				JP=JP+1;
				C[JP]=C[k];
				G[JP]=G[k];
			}
		}
		n=JP;
		if(n==0)
			break;
		else
			continue;
	}
	int I,J;
	cout<<"请输入级别I,单元标号J:"<<endl;
	cin>>I>>J;
	cout<<"第"<<I<<"级上的第"<<J<<"个单元的编号L("<<I<<","<<J<<")为:";
	if(L[I][J]==0)
		cout<<"对不起,不存在这样级别的单元!"<<endl;
	else
		cout<<L[I][J];
	cout<<endl;
	for(s=0;s<=n;s++)
	{
		delete []M[s];
		delete []L[s];
	}
		
	delete []C;
    delete []G;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -