浮蜃楼阁 2022-02-07 16:49 采纳率: 50%
浏览 27

计蒜客T1136,求修改代码

计蒜客T1136矩阵乘法,用例可通过,无法提交

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, m ,k;
    cin >> n >> m >> k;
    int a[n][m], b[m][k];
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < k; j++)
        {
            cin >> b[i][j];
        }
    }
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < k; j++)
        {
            int res = 0;
            for(int p = 0; p < m; p++)
            {
                res += a[i][p] * b[p][i];
            }
            cout << res;
            if(j == k - 1)
            {
                cout << endl;
            }
            else cout << " ";
        }
    }
    return 0;
}

后台通过0个用例
请帮忙修改正确
  • 写回答

2条回答 默认 最新

  • 关注

    可能是不支持动态数组。int a[n][m], b[m][k];这么写有的编译器不识别,用大数组代替
    int a[1000][1000], b[1000][1000];
    或者用指针也行。用指针的话代码修改如下:

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n, m ,k;
        cin >> n >> m >> k;
        int**a,**b;
        a = new int*[n];
        for(int i=0;i<n;i++)
            a[i] = new int[m];
    
        b = new int*[m];
        for (int i = 0;i<m;i++)
            b[i] = new int[k];
        
        //int a[n][m], b[m][k];
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                cin >> a[i][j];
            }
        }
        for(int i = 0; i < m; i++)
        {
            for(int j = 0; j < k; j++)
            {
                cin >> b[i][j];
            }
        }
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < k; j++)
            {
                int res = 0;
                for(int p = 0; p < m; p++)
                {
                    res += a[i][p] * b[p][i];
                }
                cout << res;
                if(j == k - 1)
                {
                    cout << endl;
                }
                else cout << " ";
            }
        }
    
        //释放空间
        for(int i=0;i<n;i++)
            delete[] a[i];
        delete[] a;
        
        for (int i = 0;i<m;i++)
            delete[] b[i];
        delete[] b;
        a=0;b=0;
        return 0;
    }
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月7日