Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两个矩阵的迹_C++ - Fatal编程技术网

C++ 两个矩阵的迹

C++ 两个矩阵的迹,c++,C++,矩阵A的行主形式为1到RC的数字。B的列主形式为1到RC的数字。计算这两个矩阵的总和,从而找到p[1][1]+p[2][2]…p[min(R,C)][min(R,C)]的轨迹。 输入输出 2 30 3 3 2 1 2 输入的第一行是没有测试用例。 我的代码适用于单个测试用例,但不适用于所有测试用例。 如果输入为 1. 3 3 我得到了期望的输出30。 但当我以 2. 3 3 1 2 我得到的输出是 30 十一, 这是我的密码 #include <

矩阵A的行主形式为1到RC的数字。B的列主形式为1到RC的数字。计算这两个矩阵的总和,从而找到p[1][1]+p[2][2]…p[min(R,C)][min(R,C)]的轨迹。 输入输出 2 30 3 3 2 1 2

输入的第一行是没有测试用例。 我的代码适用于单个测试用例,但不适用于所有测试用例。 如果输入为 1. 3 3 我得到了期望的输出30。 但当我以 2. 3 3 1 2 我得到的输出是 30 十一,

这是我的密码

#include <iostream>
using namespace std;
int min(int a,int b)
{
    return (a>b)?b:a;
}   
int main()
{
    int T,R,C,i,j,k=1,trace=0;
    int A[10][10],B[10][10];
    int r;
    cin>>T;
    if(T<1 || T>1000000)
    cout<<"invalid";
    while(T>0)
    {
        cin>>R>>C;

        if(R<1 ||R>100000 || C<1 || C>100000)
        cout<<"invalid";
        for(i=0;i<R;i++)
        {
            for(j=0;j<C;j++)
            {
                A[i][j]=k;
                k++;
                if (k>R*C)
                break;
            }
        }

        k=1;
        for(i=0;i<C;i++)
        {
            for(j=0;j<R;j++)
            {
                B[i][j]=k;
                k++;
                if (k>R*C)
                break;
            }
        }

        r=min(R,C);
        for(i=0;i<r;i++)
        {
            for(j=0;j<r;j++)
            {
            A[i][j]+=B[i][j];
            }
         }
        for(i=0;i<r;i++)
        {
            trace+=A[i][i];
        }
        cout<<trace<<"\n";
        trace=0;
        T--;

    }
    return 0;
}
#包括
使用名称空间std;
最小整数(整数a,整数b)
{
返回(a>b)?b:a;
}   
int main()
{
int T,R,C,i,j,k=1,trace=0;
INTA[10][10],B[10][10];;
INTR;
cin>>T;
如果(100万)
cout>R>>C;
如果(R100000 | C100000)
cout您应该添加:

k = 1; 

就在第一个for循环之前(在while循环内部)。您不重置它,因此下一个测试将无效值放入矩阵。

您的问题被标记为“c++”,因此您不需要说“语言:c++”,我也不明白你想要什么。无论如何,你的代码有很多问题,比如不必要的变量和计算,当A和B不能容纳超过10行10列时,你似乎允许R和C超过10行。很好地知道:)你可以接受我的答案,这样你的问题就不会再被列为未回答的问题了。