C++ 矩阵次对角线上的最大值

C++ 矩阵次对角线上的最大值,c++,matrix,C++,Matrix,这个代码应该给出这个矩阵的次对角线的最大值 1 2 3 4 4 5 6 8 9 10 11 12 但它给出了一个错误的答案。这里面似乎有一个我无法指出的小错误 #include<iostream> using namespace std; int main() { int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int max = a[0][3]; cout<<"The matrix is:"; f

这个代码应该给出这个矩阵的次对角线的最大值

1  2  3  4
4  5  6  8
9 10 11 12
但它给出了一个错误的答案。这里面似乎有一个我无法指出的小错误

#include<iostream>
using namespace std;
int main()
{

  int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
  int max = a[0][3];
  cout<<"The matrix is:";

  for(int i = 0; i<4;i++)
  {
    cout<<"\n";
    for(int j=0; j<4; j++)
      cout<<a[i][j]<<" ";
  }

  for(int i = 0; i<4; i++)
  {
    for(int j=0;j<4-i-1;j++)
    {
      if(i+j==3)
      {
        if(max<a[i][j])
        {
          max = a[i][j];
        }
      }
    }
  }

  cout<<"maximum value in second diagonal:"<<max<<endl;

  system("pause");

  return 0;

}
#包括
使用名称空间std;
int main()
{
int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int max=a[0][3];
cout你的循环应该是

for (int i = 1, j = 2; i < 4, j >= 0; i++, j--)
{
  if (max < a[i][j])
  {
     max = a[i][j];
  }
}
for(inti=1,j=2;i<4,j>=0;i++,j--)
{
if(max

它给出了正确的值
10
。不需要双循环。

您的循环因一个错误而关闭。它应该是

for(int i = 0; i<4; i++)
{
  for(int j=0;j<4-i;j++)
  {
    if(i+j==3)
    {
      if(max<a[i][j])
      {
        max = a[i][j];
      }
    }
  }
}

for(int i=0;ilast行将包含所有零,是吗?如果您没有注意到:这不是4x4矩阵(除非您有意使用零项)@MarcoA.,这就是为什么我要问的原因,IL.Oops中只给出了12个值。这不应该是零。但即使我将其设置为4x4矩阵,它仍然不起作用。