跟踪两个矩阵

时间:2015-07-25 13:29:24

标签: c++

矩阵A在行主要形式中具有数字1到R C.B在列主要形式中具有数字1到R C。计算这两个矩阵的总和,因此找到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 我输出为 三十 11

这是我的代码。

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

语言:C ++

1 个答案:

答案 0 :(得分:1)

你应该添加:

k = 1; 

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