将两个下三角矩阵存放在同一个二维数组中

题目

设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;
}

实现效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/niulinbiao/article/details/127895216