C++矩阵关系远算

这个问题是离散数学中的关系矩阵问题,设关系矩阵为R1: 1   0   1     R2:  1   0   1
                                                                                              1   0   1          0   1   1
                                                                                              0   1   0           1   0   0
则根据公式运算方法为
1∧1 ∨ 0∧0 ∨ 1∧1     1∧0 ∨ 0∧1 ∨ 1∧0     1∧1 ∨ 0∧1 ∨ 1∧0
1∧1 ∨ 0∧0 ∨ 1∧1     1∧0 ∨ 0∧1 ∨ 1∧0    1∧1 ∨ 0∧1 ∨ 1∧0
0∧1 ∨ 1∧0 ∨ 0∧1     0∧0 ∨ 1∧ 1 ∨ 0∧0    0∧1∨ 1∧1 ∨ 0∧0

因为生成的新矩阵C的第一个元素(1,1),我们可以将A矩阵的第一列1,1,0放到一个数组里,将B矩阵的第一行1 0 1进行一一对应,即同时为1的时候那么其结果就是1,所以我们可以以此解决问题,代码如下:

#include <iostream>
using namespace std;
const int N=100;
int A[N][N];
int B[N][N];
int a,b,c;
//构造一个方法:对生成的矩阵的位置进行判断是否有同时为1,如果有就返回1,否则返回0.
int pan(int d,int e){
	for(int i=1;i<=b;i++){
		if(A[d][i]==1&&B[i][e]==1){ //进行判断是否有同时为1的
			return 1;
		}
	}
	return 0;
}
int main(){
    cout<<"请分别输入第一个矩阵的行数,列数。第二个矩阵的列数(第一个矩阵的列数等于第二个矩阵的行数,因此不用输入)" ;
	cin>>a>>b>>c;
	for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
			cin>>A[i][j];
		}
	}
	for(int i=1;i<=b;i++){
		for(int j=1;j<=c;j++){
			cin>>B[i][j];
		}
	}
	for(int i=1;i<=a;i++){
		for(int j=1;j<=c;j++){
			cout<<pan(i,j);
		}
		cout<<endl;
	}
	return 0;
}


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值