题目
设A和B均为下三角矩阵,每一个都有n行n列。因此在下三角区域中各有n(n+1)/2个元素。另设有一个二维数组C,它有n行n+1列。试设计一个方案,将两个矩阵A和B中的下三角区域元素存放于同一个C中。要求将A的下三角区域中的元素存放于C的下三角区域中,B的下三角区域中的元素转置后存放于C的上三角区域中。并给出计算A的矩阵元素a[i,j],和B的矩阵元素b[i,j]在C中的存放位置的下标的公式
代码
/**
* 设A和B均为下三角矩阵,每一个都有n行n列。因此在下三角区域中各有n(n+1)/2个元素。
* 另设有一个二维数组C,它有n行n+1列。试设计一个方案,将两个矩阵A和B中的下三角区域元素存放
* 于同一个C中。要求将A的下三角区域中的元素存放于C的下三角区域中,B的下三角区域中的元素转置
* 后存放于C的上三角区域中。并给出计算A的矩阵元素a[i,j],和B的矩阵元素b[i,j]在C中的存放位置
* 下标的公式
**/
/**
* 公式
* a[i,j]=c[i,j];
* b[i,j]=c[j,i+1];
**/
#include <iostream>
using namespace std;
int a[3][3] = {
{
1,2,3},{
2,1,4},{
3,4,1}};
int b[3][3] = {
{
1,4,6},{
4,1,5},{
6,5,1}};
int reverse(int a[][3],int b[][3],int c[][3+1],int n){
for(int i=0;i<n;i++){
for(int j=0;j<n+1;j++){
if(i>=j){
c[i][j]=a[i][j];
c[j][i+1]=b[i][j];
}
}
}
return 0;
}
int main() {
int c[3][4];
int n=3;
reverse(a,b,c,n);
for(int i=0;i<n;i++){
for(int j=0;j<n+1;j++){
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}