• 大小: 395KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: ISM  邻接矩阵  C/C++  

资源简介

根据邻接矩阵求可达矩阵,再求可达结合和先行集合及交集。

资源截图

代码片段和文件信息

#include

int a[5][5]={{00000}{00110}{10010}{00101}{10000}};
int b[5][5]={{10000}{01000}{00100}{00010}{00001}};
int c[5][5]={0};//每次都乘以C[][]
int e[5][5]={0};//存放(A+I)的n次方的结果,用于与(A+I)的n+1次方比较
int d[5][5]={0};

//函数声明
void f1();   //求(a+i)的n次方
int  f2(int e[][5]int d[][5]);//判断两个矩阵是否相等
void f3(int a[][5]int b[][5]);//一个矩阵的值赋给另外一个矩阵存起来
void f4();//求可达集合和先行集合
void f5();//层级数
void f6(int m);//删除其中相等的元素或集合

void main()
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
c[i][j]=a[i][j]>=b[i][j] ? a[i][j] : b[i][j];
f3(ec);
printf(“输出原始邻接矩阵和单位矩阵的布尔加法\n“);
for(i=0;i<5;i++)
{
for(int j=0;j<5;j++)
printf(“%d “e[i][j]);
printf(“\n“);
}
f3(dc);
f1();
while(f2(ed)!=1)//如果两个矩阵不相等,则继续调用f1();让d[][]*c[][];直到他们相等,则跳出循环
f1();
printf(“输出可达矩阵:\n“);
for(i=0;i<5;i++)
{
for(int j=0;j<5;j++)
printf(“%d “d[i][j]);
printf(“\n“);
}
f4();
f5();
}
void f1()   //求(a+i)的n次方
{
f3(ed);//此处先把上次乘出的值存放在e[][]中,用于下次比较
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
for(int k=0;k<5;k++)
{
int t=e[i][k]*c[k][j];
d[i][j]=d[i][j]>=t ? d[i][j] : t;
}
}
int f2(int e[][5]int d[][5])//判断两个矩阵是否相等
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(e[i][j]!=d[i][j])
{
return 0;
break;
}
return 1;
}
void f3(int a[][5]int b[][5])//一个矩阵的值赋给另外一个矩阵存起来
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
a[i][j]=b[i][j];

}
//a[][]用来存放可达集合 b[][]用来存放先行集合 c[][]用来存放可达集合与先行集合的交集
void f4()//求可达集合和先行集合
{
for(int i=0;i<5;i++)//求可达集合对于行来说,就是可达集合
for(int j=0;j<5;j++)
if(d[i][j]==1)
a[i][j]=j+1;

for(int j=0;j<5;j++)//求先行集合对于列来说,就是先行集合
for(int i=0;i<5;i++)
if(d[i][j]==1)
b[i][j]=i+1;
for(i=0;i<5;i++)//求转置矩阵
{
int t;
for(int j=0;j {
t=b[i][j];
b[i][j]=b[j][i];
b[j][i]=t;
}
}
    for(i=0;i<5;i++)
for(int j=0;j<5;j++)
c[i][j]=0;//将c[][]矩阵清零,用来存放可达集合与先行集合的交集
for(i=0;i<5;i++)
for(int j=0;j<5;j++)
{
if(a[i][j]==b[i][j])
{
c[i][j]=a[i][j];
}
}
/*
printf(“输出     可达集合       先行集合     可达集合与先行集合的交集\n“);
for(i=0;i<5;i++)
{
printf(“第%d 行:  “i+1);
for(int j=0;j<5;j++)
printf(“%d “a[i][j]);

printf(“    “);
for(j=0;j<5;j++)

printf(“%d “b[i][j]);
printf(“    “);
for(j=0;j<5;j++)
printf(“%d “c[i][j]);

printf(“\n“);
}
*/
for(i=0;i<5;i++)
{
printf(“第%d 行:  “i+1);
for(int j=0;j<5;j++)
if(a[i][j]!=0)
printf(“%d “a[i][j]);
else
printf(“  “);
printf(“    “);
for(j=0;j<5;j++)
if(b[i][j]!=0)
printf(“%d “b[i][j]);
else
printf(“  “);
printf(“    “);
for(j=0;j<5;j++)
if(c[i][j]!=0)
printf(“%d “c[i][j]);
else
printf(“  “);
printf(“\n“);
}//此处输出时二者选择其一。
}
void f5()//求层级数
{
    printf(“输出每一层的层级数\n“);
    int t=1;
for(int n=0;n<5;n++)
for(int i=0;i<5;i++)
{
int flag=1;
int m=0;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      43622  2010-09-07 10:40  ISM\0000.jpg

     文件     176211  2010-09-11 23:26  ISM\Debug\ism.exe

     文件     182812  2010-09-11 23:26  ISM\Debug\ism.ilk

     文件      12840  2010-09-11 23:26  ISM\Debug\ism.obj

     文件     203724  2010-09-11 23:25  ISM\Debug\ism.pch

     文件     435200  2010-09-11 23:26  ISM\Debug\ism.pdb

     文件      41984  2010-09-11 23:27  ISM\Debug\vc60.idb

     文件      45056  2010-09-11 23:26  ISM\Debug\vc60.pdb

     文件      43622  2010-09-07 10:40  ISM\ISM\0000.jpg

     文件     176211  2010-09-11 23:26  ISM\ISM\Debug\ism.exe

     文件     182812  2010-09-11 23:26  ISM\ISM\Debug\ism.ilk

     文件      12840  2010-09-11 23:26  ISM\ISM\Debug\ism.obj

     文件     203724  2010-09-11 23:25  ISM\ISM\Debug\ism.pch

     文件     435200  2010-09-11 23:26  ISM\ISM\Debug\ism.pdb

     文件      41984  2010-09-11 23:26  ISM\ISM\Debug\vc60.idb

     文件      45056  2010-09-11 23:26  ISM\ISM\Debug\vc60.pdb

     文件       4703  2010-09-11 23:26  ISM\ISM\ism.cpp

     文件       3365  2010-09-05 11:58  ISM\ISM\ism.dsp

     文件        531  2010-09-05 12:04  ISM\ISM\ism.dsw

     文件        677  2008-11-22 23:13  ISM\ISM\ism.h

     文件      41984  2010-09-11 23:26  ISM\ISM\ism.ncb

     文件      53760  2010-09-11 23:26  ISM\ISM\ism.opt

     文件       1126  2010-09-11 23:26  ISM\ISM\ism.plg

     文件        127  2008-10-11 18:31  ISM\ISM\relation.txt

     文件       5443  2008-11-22 23:14  ISM\ISM\solution.txt

    ..A.SH.      9728  2010-09-06 11:30  ISM\ISM\Thumbs.db

     文件       4703  2010-09-11 23:26  ISM\ism.cpp

     文件       3365  2010-09-11 23:27  ISM\ism.dsp

     文件        531  2010-09-11 23:27  ISM\ism.dsw

     文件      41984  2010-09-11 23:27  ISM\ism.ncb

............此处省略10个文件信息

评论

共有 条评论