好文档 - 专业文书写作范文服务资料分享网站

离散数学实验-C-++关系的运算(幂运算-闭包运算)

天下 分享 时间: 加入收藏 我要投稿 点赞

.

实验2 关系的运算 (1) 关系的幂运算

输入:集合A,二元关系集合R,幂次n 输出:R的n次幂

要求:尽量使运算的计算量最小 (2) 关系闭包的计算 输入:集合A,二元关系集合R 输出:R的传递闭包t(R) 要求:

(a) 采用Warshall 算法(89页) (b) 编写代码判断输出t(R)为传递闭包 程序代码:

#include #include #include using namespace std;

typedef vector< vector > Mat; class Relation{ vectors;//集合 Mat A;//关系矩阵 Mat B; Mat C;

精选文档

.

Mat E;

Mat D[100]; //用来存储矩阵 int n; public:

void inputs();//将集合存入向量中

void inputa();//将读入的关系转化为关系矩阵 void print();//输出关系矩阵 void mi(); int Warshall(); };//定义类

int n,m;//全局变量,下文中使用 void Relation::inputs(){ cout<<\输入集合\ for(int a;cin>>a;){ s.push_back(a); if(getchar()=='\\n') break;}

}//将集合存入向量中

void Relation::inputa(){//将读入的关系转化为关系矩阵

精选文档

.

cout<<\输入关系\ int i,j,e,r;

for(i=0;i u; for(j=0;j

}//创建二维向量,初始化,是每个元素为0 for(int h,z;cin>>h>>z;){ if(h==0&&z==0) break;

for(i=0;i

A[e][r]=1;B[e][r]=1;

E[e][r]=1;//C[e][r]=1;//读入关系,将关系对应的矩阵

精选文档

.

中的位置元素变为1 if(getchar()=='\\n') break; } }

void Relation::print(){ for(int i=0;i

}//输出关系矩阵 void Relation::mi(){

int a,b,i,c;

cin>>n; //读入幂次 if(n==0){ //0次幂 for(int k=0;k

cout<<\对角线上元素为1

精选文档

.

else

cout<<\ }

cout<

for(i=1;i

for(int h=0;h

for(int x=0;x

C[h][d]=m; } } if(i>1){

for(a=0;a

第h

7oii50fqac6x2111f20r4n7xz5ee5l00bju
领取福利

微信扫码领取福利

微信扫码分享