C语言之基本算法33—矩阵的基本运算
//矩阵基础
/*
==================================================================
题目:输入矩阵a,b,输出a,b,a的转置矩阵d。a*b,b+d=e;
==================================================================
*/
#include<stdio.h>
#define TJ1 for(i=0;i<2;i++)
#define TJ2 for(j=0;j<3;j++)
#define hh printf("\n")
void main()
{
int a[2][3],b[3][2],c[2][2],d[3][2],e[3][2];
int i,j,k;
//输入矩阵a
printf("输入2*3矩阵a:\n");
TJ1
TJ2
scanf("%d",&a[i][j]);
//输入矩阵b
printf("\n输入3*2矩阵b:\n");
TJ2
TJ1
scanf("%d",&b[j][i]);
//输出矩阵a:
printf("\n=====================\n输出矩阵a:\n");
TJ1
{
TJ2
printf("%4d",a[i][j]);
hh;
}
printf("\n=====================\na的转置矩阵d:\n");
TJ1
TJ2
d[j][i]=a[i][j];
TJ2
{
TJ1
printf("%4d",d[j][i]);
printf("\n");
}
//输出矩阵b:
printf("\n\n=====================\n输出矩阵b:\n");
TJ2
{
TJ1
printf("%4d",b[j][i]);
hh;
}
//矩阵a*矩阵b,保存至c
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
//输出矩阵c:
printf("\n=====================\n矩阵a[2][3]*b[3][2]=c[2][2],例如以下:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%4d ",c[i][j]);
printf("\n");
}
printf("\n=====================\n矩阵b+矩阵d:\n");
TJ2
TJ1
e[j][i]=b[j][i]+d[j][i];
TJ2
{
TJ1
printf("%4d ",e[j][i]);
hh;
}
}
/*
====================================================================
评:
1、掌握输出时换行的方法;
2、转置矩阵时将原矩阵行和列交换。a[i][j]-->d[j][i],原来是2行3列,如今以3行两列输出!
即
i=0;i<3;i++;\j=0;j<2;j++;i和j仅仅是符号,不影响结果。仅仅是输出时与d[行][列]相应起来就好。
3、加法非常easy,但必须是通行矩阵;
4、乘法比較复杂,先定义初始矩阵。赋初值=0;然后定义保存乘积矩阵的列,注意该列最大
值为左矩阵的列,然后左行*右列,先列添加,然后换下一行,反复以上步骤,直至最后一行
乘以最后一列结束。
=====================================================================
*/
C语言之基本算法33—矩阵的基本运算的更多相关文章
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 算法提高 矩阵乘法 区间DP
这是神题,n <= 1000,如果是极限数据普通的n^3区间DP怎么可能过?可偏偏就过了. 刘汝佳大哥的训练指南上面说的存在nlgn的算法解决矩阵链乘问题,可是百度都找不到.... AC代码 # ...
- 【BZOJ1009】GT考试(KMP算法,矩阵快速幂,动态规划)
[BZOJ1009]GT考试(KMP算法,矩阵快速幂,动态规划) 题面 BZOJ 题解 看到这个题目 化简一下题意 长度为\(n\)的,由\(0-9\)组成的字符串中 不含串\(s\)的串的数量有几个 ...
- 算法笔记_081:蓝桥杯练习 算法提高 矩阵乘法(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最 ...
- 0.数据结构(python语言) 基本概念 算法的代价及度量!!!
先看思维导图: *思维导图有点简陋,本着循循渐进的思想,这小节的知识大多只做了解即可. *重点在于算法的代价及度量!!!查找资料务必弄清楚. 零.四个基本概念 问题:一个具体的需求 问题实例:针对问题 ...
- 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】
算法提高 矩阵乘法 时间限制:3.0s 内存限制:256.0MB 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要 ...
- C语言版数据结构算法
C语言版数据结构算法 C语言数据结构具体算法 https://pan.baidu.com/s/19oLoEVqV1I4UxW7D7SlwnQ C语言数据结构演示软件 https://pan.baidu ...
- Java实现 蓝桥杯 算法提高 矩阵乘法(暴力)
试题 算法提高 矩阵乘法 问题描述 小明最近刚刚学习了矩阵乘法,但是他计算的速度太慢,于是他希望你能帮他写一个矩阵乘法的运算器. 输入格式 输入的第一行包含三个正整数N,M,K,表示一个NM的矩阵乘以 ...
随机推荐
- js j将数字每三位用逗号隔开的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【调试】如何使用javascript的debugger命令进行调试(重要)
首先安装firebug,在firefox的扩展里搜索安装即可. 然后在页面中启用firebug中的脚本: 然后在网页某些位置加入debugger命令,比如如下页面代码: <!DOCTYPE ht ...
- Linux应用层的定时器Timer使用详解【转】
转自:http://blog.csdn.net/wwwtovvv/article/details/8601528 版权声明:本文为博主原创文章,未经博主允许不得转载. linux下定时器的使用 -- ...
- android hook 框架 ADBI 简介、编译、运行
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
- 华为上机测试题(MP3光标移动-java)
PS:此题满分,可参考 描述: MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲.为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第 ...
- ***七牛跨域上传图片JS SDK
SDK: http://developer.qiniu.com/code/v6/sdk/javascript.html#upload 上传 在页面中引入 plupload,plupload.full. ...
- laravel-u-editor工具栏语言切换的方法
更改/config/app.php/locale,可支持en,zh_CN,zh_TW,我们一般设为zh_CN
- 使用 ElasticSearch Aggregations 进行统计分析
https://blog.csdn.net/zxjiayou1314/article/details/53837719/
- ASP.NET Code First Update-Database
问题描述: 复制了一个模块化的MVC5的项目,模块化的解释是说不同功能的模块分开来放的. 明确每个模块都是做什么工作的. 首先最基本的,就是根据Apps.Models模块来创建数据库了. 做法是卸载A ...
- 51nod 1090 3个数和为0【二分】
1090 3个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从 ...