查找二维数组中子数组之和最大值 郭莉莉李亚文

阅读: 评论:0

查找二维数组中子数组之和最大值    郭莉莉李亚文

查找二维数组中子数组之和最大值 郭莉莉李亚文

一。

在主函数中实现二维数组的输入、

代码主要函数maxson(),主要利用for()循环先查找出最大字数组的四角的坐标xmin,xmax,ymin,ymax来确定最大子数组,

在循环中算出之和,编写过程中行列的值赋值错误,但经过调试查找出来了;后来在输出最大子数组的地方遇到麻烦,

考虑不周全用普遍的  if(j%n==0)cout<<endl;来进行换行,导致出现错误,应改为if(j%n==m),m为最大子数组的第一列,

源代码:

#include <iostream> 
using namespace std;int a[100][100];
int maxson(int M,int N)
{int xmin,xmax,ymin,ymax;int m,n,p,q,t;int i,j,max=a[0][0],sum=0;for(xmin=0;xmin<M;xmin++)for(xmax=xmin+1;xmax<=M;xmax++)for(ymin=0;ymin<N;ymin++)for(ymax=ymin+1;ymax<=M;ymax++){    sum=0;for(j=xmin;j<xmax;j++)for(i=ymin;i<ymax;i++){sum=a[i][j]+sum;}if(max<sum) {max=sum;m=xmin; n=xmax;p=ymin; q=ymax;}	 }cout<<"最大子数组为"<<endl;t=n-m;for(i=p;i<q;i++)     for(j=m;j<n;j++){	 if(j%t==m)cout<<endl; cout<<a[i][j]<<'t';}cout<<endl;return max;}void main()
{int M=0,N=0,i,j;while(!M)                               //检查输入的M,N否则重新输{cout<<"数组的行数: ";cin>>M;if(M<=0){M=0;cout<<"行数必须大于0"<<endl;}}while(!N){cout<<"数组的列数: ";cin>>N;if(N<=0){cout<<"列数必须大于0"<<endl;N=0;}cout<<"输入数组的值:";       //输入二维数组的值for(i=0;i<M;i++)for(j=0;j<N;j++){cin>>a[i][j];}}cout<<"您输入的数组为:" ; //输出数组 for(i=0;i<M;i++)     for(j=0;j<N;j++){if(j%N==0)cout<<endl; cout<<a[i][j]<<'t';}cout<<endl;cout<<"子数组和为:"<<maxson(M,N)<<endl;
}

 2.运行结果

转载于:.html

本文发布于:2024-02-01 21:57:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170679583339673.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数组   中子   最大值   之和   李亚文
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23