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

代码片段和文件信息
#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个文件信息
- 上一篇:课程表排课源代码四川大学数据结构与算法满分作业
- 下一篇:C++ 创建读写PDF
相关资源
- 北京化工大学计算方法(C/C++)讲义
- GBT 28169-2011 嵌入式软件 C语言编码规范
- XUnZip Zip解压缩.rar
- Windows_API_函数大全 C/C++
- C语言程序设计教材习题参考答案.do
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- 高效FFT的C/C++代码实现包括基2的DIF和
- c/c++开发网络验证和本地验证
- 操作系统存储管理实验报告c/c++
- C++编写的万年历源码
- C语言进阶源码---基于graphics实现图书
- 井字棋三连棋的AI实现,C/C++
- 《水果忍者》设计报告.doc
- MFC实现的红绿灯程序
- Win32简易画图程序
- C++网络爬虫项目
- 泡泡堂(炸弹人)小游戏C/C++完整源码
- 使用C/C++读取BITMAP的内容
- VC图像处理-用Canny算子提取边缘
- C/C++视频教程
- 个人总结的一些C/C++编码规范
- 高斯消去法求解线性方程组C/C++程序输
- celrityC/C++源码查看工具
- 网络编程MFC 实验四 FTP客户端功能实现
- C/C++语言大作业、小游戏
- 完整的C/C++时序的B+树数据库系统实现
- Eclipse C/C++ 自动补全的cdt补丁
- MongoDB C/C++开发使用案例Demo
- C/C++使用WinIO读取CMOS数据代码
- Diab C/C++ Compiler for PowerPC
评论
共有 条评论