プログラマ行列の積


問題の説明


2つのマトリクスが与えられます.2つのマトリックスの積とマトリックスを求めます

アイデア


解行列法に従って複文を用いただけである.

コードcpp

#include <string>
#include <vector>

using namespace std;

int calc_line(vector<vector<int>> &arr1, vector<vector<int>> &arr2,int a, int b,int m){
    int res=0;
    for(int i =0;i<m;i++){
        res+=arr1[a][i]*arr2[i][b];
    }
    return res;
}

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    int n = arr1.size(),m=arr2.size(),r=arr2[0].size();
    for(int i = 0;i<n;i++){
        answer.push_back(vector<int>());
    }
    for(int i = 0;i<n;i++){
        for(int j = 0;j<r;j++){
            answer[i].push_back(calc_line(arr1,arr2,i,j,m));
        }
    }
    
    return answer;
}

Pythonコード

def calc_line(arr1,arr2,i,j,m):
    ret =0
    for ctr in range(m):
        ret+=arr1[i][ctr]*arr2[ctr][j]
    return ret

def solution(arr1, arr2):
    n = len(arr1)
    m = len(arr2)
    r = len(arr2[0])
    
    answer = [[] for i in range(n)]
    print(answer)
    for i in range(n):
        for j in range(r):
            answer[i].append(calc_line(arr1,arr2,i,j,m))
    return answer