矩阵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 ++
答案 0 :(得分:1)
你应该添加:
k = 1;
在第一个for循环之前(在while循环内)。您没有重置它,因此下一个测试会将无效值放入矩阵中。