• N阶行列式---常见的几种运算


    今天刚学了离散数学中的关系,联想到线性代数中的矩阵,想到关系可用矩阵(N * N)表示,于是写了几个的程序,其中 N 表示行列式的阶数。

    1. N 阶行列式相乘

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int map_1[501][501], map_2[501][501];//map_1第一个行列式, map_2为第二个行列式 
    int a[501][501];//相乘后的行列式
    
    int main()
    {
    	memset(map_1, 0, sizeof(map_1));//数组清零
    	memset(map_2, 0, sizeof(map_2));
    	memset(a, 0, sizeof(a));
    
        int N;// 表示N阶行列式
    	int n, m, x, y, i, j, k, num = 1;
    	scanf("%d", &N);
        scanf("%d %d", &n, &m);//n 表示第一个行列式中有几组关系,m表示第二个行列式中有几组关系
    	for(i=1; i<=n; i++)
    	{
    		scanf("%d %d", &x, &y);
    		map_1[x][y] = 1;
    	}
    	for(i=1; i<=m; i++)
    	{
    		scanf("%d %d", &x, &y);
    		map_2[x][y] = 1;
    	}
    
    	for(i=1; i<=n; i++)//完成行列式相乘的代码
    		for(j=1; j<=n; j++)
    			for(k=1; k<=n; k++)
    			{
    				if(map_1[i][k] == 1 && map_2[k][j] == 1)
    				{
    		             a[i][j] = 1;
    					 break;
    				}
    				else
    					a[i][j] = 0;
    			}
    		for(i=1; i<=N; i++)//输出相乘后的行列式
    			for(j=1; j<=N; j++)
    		{
    			printf("%d", a[i][j]);
    			if(j<N)
    				printf(" ");
    			else
    				printf("
    ");
    		}
    
    	return 0;
    }
    
    
    	

    2. 行列式转换

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int map_1[501][501], map_2[501][501];//map_1第一个行列式, map_2为第二个行列式 
    
    int main()
    {
    	memset(map_1, 0, sizeof(map_1));//数组清零
    	memset(map_2, 0, sizeof(map_2));
    
        int N;// 表示N阶行列式
    	int n, x, y, i, j, k, num = 1;
    	scanf("%d", &N);
        scanf("%d", &n);//n 表示第一个行列式中有几组关系,m表示第二个行列式中有几组关系
    	for(i=1; i<=n; i++)
    	{
    		scanf("%d %d", &x, &y);
    		map_1[x][y] = 1;
    		map_2[y][x] = 1;
    	}
        printf("转置前的行列式
    ");
    	for(i=1; i<=N; i++)//输出转置前的行列式
    		for(j=1; j<=N; j++)
    		{
    			printf("%d", map_1[i][j]);
    			if(j<N)
    				printf(" ");
    			else
    				printf("
    ");
    		}
    	printf("
    ");
    	printf("转置后的行列式
    ");
    	for(i=1; i<=N; i++)//输出转置后的行列式
    		for(j=1; j<=N; j++)
    		{
    			printf("%d", map_2[i][j]);
    			if(j<N)
    				printf(" ");
    			else
    				printf("
    ");
    		}
    
    
    	return 0;
    }
    
    
    	


    每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
  • 相关阅读:
    Django_环境配置(一)
    python 使用sub替换时报错“re.error: bad escape P”或 “SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes”
    python 获取异常全部信息
    Flink入门 构建一个应用
    Flink入门 本地环境搭建
    mysql数据库 使用分析工具 进行慢查询分析
    Windows环境下搭建 【ElasticSearch】
    SpringBoot 事务的控制
    spring boot 数据库事务检查
    利用jenkins一键部署项目
  • 原文地址:https://www.cnblogs.com/6bing/p/3931250.html
Copyright © 2020-2023  润新知