HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

这篇具有很好参考价值的文章主要介绍了HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用于解决这类问题:

举例一、

HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

 举例二、(求传递闭包)

HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包

 

代码如下:文章来源地址https://www.toymoban.com/news/detail-512731.html

#include <iostream>
#include <cstdlib>
using namespace std;
class matrix
{
private:
    int rows, cols;
    int **p;
public:
    matrix();
    matrix(int &M, int &N);
    matrix(matrix &A, int m, int n);
    ~matrix();

    matrix multi(int x);   
    void out();    
    void input();

    matrix operator+(matrix &another); 
    matrix operator*(matrix &another);  
};
matrix::matrix(int &M, int &N)
{
    rows=M, cols=N;
    p=new int*[rows];
    for(int i=0;i<M;i++)
    {
        p[i]=new int[cols];
    }
}

matrix::matrix(matrix &A, int m, int n)  
{
    rows=A.rows-1,  cols=A.cols-1;
            p=new  int*[rows];
            for(int  i=0;i<rows;i++)
            {
                    p[i]=new  int[cols];
            }
            for(int  i=0;  i<m;  i++)
                    for(int  j=0;  j<n;  j++)
                          p[i][j]=A.p[i][j];
    
            for(int  i=0;  i<m;  i++)
                    for(int  j=n+1;  j<A.cols;  j++)
                          p[i][j-1]=A.p[i][j];
    
            for(int  i=m+1;  i<A.rows;  i++)
                    for(int  j=0;  j<n;  j++)
                          p[i-1][j]=A.p[i][j];
    
            for(int  i=m+1;  i<A.rows;  i++)
                    for(int  j=n+1;  j<A.cols;  j++)
                          p[i-1][j-1]=A.p[i][j];

}

matrix::~matrix()
{
    for(int i=0; i<rows; i++)
        delete[] p[i];

    delete[] p;
}

void matrix::out()    
{
    for(int  i=0;  i<rows;  i++)
    {
             for(int  j=0;  j<cols;  j++)
             {
             	if (p[i][j]!=0) cout<<1<<" ";
             	else cout<<0<<" ";
             }
    cout<<endl;
    }

}

void matrix::input()
{
    for(int i=0; i<rows; i++)
        for(int j=0; j<cols; j++)
            cin>>p[i][j];

}

matrix matrix::operator+(matrix &another) 
{
    matrix tmp(rows, cols);
    for(int  i=0;  i<rows;  i++)
                    for(int  j=0;  j<cols;  j++)
                            tmp.p[i][j]=p[i][j]+another.p[i][j];
    return tmp;
}

matrix matrix::operator*(matrix &another)  
{
    matrix tmp(rows, another.cols);
    for(int i=0; i<rows; i++)
    {
        for(int j=0; j<another.cols; j++)
        {
           tmp.p[i][j]=0;
           for (int k=0;k<cols;k++)
           {
               tmp.p[i][j]+=(p[i][k]*another.p[k][j]);
           }

        }
    }
    return tmp;
}

int main()
{
    int M;
    cin>>M;
    matrix mA(M, M); 
    mA.input();

	cout<<endl;
    matrix mm3=mA;
    matrix mtr=mA;
    for(int i=2;i<6;i++)
	{
		cout<<"MtR"<<i-1<<"="<<endl;
		mtr.out();
		mm3=mA*mm3;
		cout<<"MR("<<i<<")="<<endl;
		mm3.out();
		cout<<endl;
		mtr=mtr+mm3;
		cout<<endl;
		for (int j=0;j<=20;j++) cout<<"-";
		cout<<endl;
	 } 
	system("pause"); 


    return 0;
}

到了这里,关于HNU-离散数学-工具箱系列3-关系矩阵法求传递闭包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python工具箱系列(三十)

    MySQL的口号是“世界上最流行的开源关系型数据库”,而PostgreSQL的Slogan则是“世界上最先进的开源关系型数据库(PostgreSQL: The World\\\'s Most Advanced Open Source Relational Database)”,一看这就是一对老冤家了。这两个口号很好的反映出了两者的形象特质:PostgreSQL是功能丰富,高大上的严

    2024年02月03日
    浏览(59)
  • Python工具箱系列(三十七)

    二进制文件操作(上) python比较擅长与文本相关的操作。但现实世界中,对于非文本消息的处理也很普遍。例如: ◆通过有线、无线传递传感器获得的测量数据。 ◆卫星通过电磁波发送测量数据。 ◆数据中心的数万台服务器发送当前CPU的占用率信息、内存占用量等众多指标

    2024年02月11日
    浏览(40)
  • Python工具箱系列(三十三)

    Timescaledb 在物联网时代,出现了大量以时间为中心海量产生的传感器数据,称为时序数据。这类数据的特点是: 数据记录总有一个时间戳。 数据几乎总是追加,不更新也不删除。 大量使用近期的数据。很少更新或者回填时间间隔的缺失数据。 与时间间隔频率关系不大。但累

    2024年02月06日
    浏览(56)
  • Python工具箱系列(三十九)

    现实世界中,大量存在着对数据压缩的需求。为此,python内置了zlib压缩库,可以方便的对任意对象进行压缩。 下述代码演示了对字符串进行压缩: 运行上述代码后,会发现压缩并不一定会减少字节数,压缩的效率取决于压缩内容中的冗余程度。对于第一句的中文压缩后反而

    2024年02月15日
    浏览(46)
  • Python工具箱系列(三十六)

    基于Docker的数据库开发环境 前文介绍了sqlite/mysql/mssql等数据库系统在ubuntu的安装与部署过程,相对是比较复杂的,需要耐心等待下载以及排除各种故障,对于开发人员来说是不太友好。在某些情况下,开发人员要测试在多个数据库环境下软件的正确性,需要部署多个数据库,

    2024年02月09日
    浏览(45)
  • Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个

    2024年02月03日
    浏览(47)
  • Python工具箱系列(四十一)

           前文的代码示例了使用gzip对单个文件进行压缩。本文示例使用更通用的zipfile来批量压缩文件。zipfile也是python内置的库,使用起来非常方便。废话不说,直接上代码示例。        上述示例代码中,再次引入一个python内置的轻量级数据库dbm。与shelve类似,也是key-val

    2024年02月11日
    浏览(49)
  • Python工具箱系列(三十二)

    Elasticsearch是一个基于Lucene的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful 的API接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是非常流行的企业级搜索引擎。官方支持的客户端语言包括Java、.NET(C#)、PHP、Python、Apa

    2024年02月05日
    浏览(50)
  • Python工具箱系列(三十四)

    SQLAlchemy是著名的ORM(Object Relational Mapping-对象关系映射)框架。其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。对许多语言(例如JAVA/PYTHON)来说就是定义一个对象,并且这个对象对应着一张数据库的表。而这个对象的实例,就对应着表中的一条记录。

    2024年02月06日
    浏览(48)
  • IDEA插件系列(4):GitToolBox插件——git工具箱

    GitToolBox 提供各种git操作。 第一种安装方式是使用IDEA下载安装 第二种安装方式是使用离线插件进行安装 插件下载地址:http://plugins.jetbrains.com/plugin/7499-gittoolbox 在这里进行配置 更多可参考文档 https://github.com/zielu/GitToolBox/wiki/Manual 作用:显示当前代码提交的用户名、时间、以

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包