源代码:
#include<iostream>
using namespace std;
#include"math.h"
void main()
{
int N=5;
int M=5;
int n=-10;
int m=10;
int a[5][10];
int b[10];
int A=0;
int Max=0;
int MAX=0;
cout<<"请输入数组元素:";
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>a[i][j];
a[i][M+j]=a[i][j];
}
}
for(int i=0;i<N;i++)
{
int h=i;
for(int s=0;s<2*M;s++)
{
b[s]=0;
}
do
{
int e=0;
int c=0;
int d=0;
for(int k=0;k<2*M-1;k++)
{
b[k]=b[k]+a[h][k];
}
A=b[0];
Max=b[0];
for(int j=1;j<2*M-1;j++)
{
if(A<0)
{
A=b[j];
if(Max<A)
{
Max=A;
e=j;
c=j;
d=e;
}
else
{
e=j;
}
}
else
{
if((j-d)==M)
{
break;
}
if(b[j]<0)
{
if(Max<A)
{
Max=A;
c=j-1;
d=e;
}
A=A+b[j];
}
else
{
A=A+b[j];
if(Max<A)
{
Max=A;
c=j;
d=e;
}
}
}
}
if(h==0)
{
MAX=Max;
}
else if(MAX<Max)
{
MAX=Max;
}
h++;
}while((h<N));
}
cout<<"最大字数组和为:"<<MAX;
}
#include<iostream>
using namespace std;
#include"math.h"
void main()
{
int N=5;
int M=5;
int n=-10;
int m=10;
int a[5][10];
int b[10];
int A=0;
int Max=0;
int MAX=0;
cout<<"请输入数组元素:";
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>a[i][j];
a[i][M+j]=a[i][j];
}
}
for(int i=0;i<N;i++)
{
int h=i;
for(int s=0;s<2*M;s++)
{
b[s]=0;
}
do
{
int e=0;
int c=0;
int d=0;
for(int k=0;k<2*M-1;k++)
{
b[k]=b[k]+a[h][k];
}
A=b[0];
Max=b[0];
for(int j=1;j<2*M-1;j++)
{
if(A<0)
{
A=b[j];
if(Max<A)
{
Max=A;
e=j;
c=j;
d=e;
}
else
{
e=j;
}
}
else
{
if((j-d)==M)
{
break;
}
if(b[j]<0)
{
if(Max<A)
{
Max=A;
c=j-1;
d=e;
}
A=A+b[j];
}
else
{
A=A+b[j];
if(Max<A)
{
Max=A;
c=j;
d=e;
}
}
}
}
if(h==0)
{
MAX=Max;
}
else if(MAX<Max)
{
MAX=Max;
}
h++;
}while((h<N));
}
cout<<"最大字数组和为:"<<MAX;
}
上面是结果截图。
实验思路:粘贴复制一个二维数组放到原来二维数组的后面,然后按照以前的方法进行筛选。最后确定一个矩阵。
总结:二维数组相比于一维数组方法没有变化,我们也没有进行优化,只是感觉二维数组应该注意的东西更多,相比于一维数组更麻烦一些,感觉现在面临的问题主要不是思路,而是编程,有时候思路挺好想的,就是编不出来,编程能力有待提高。