[软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
生活随笔
收集整理的這篇文章主要介紹了
[软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一。
在主函數(shù)中實(shí)現(xiàn)二維數(shù)組的輸入、
代碼主要函數(shù)maxson(),主要利用for()循環(huán)先查找出最大字?jǐn)?shù)組的四角的坐標(biāo)xmin,xmax,ymin,ymax來確定最大子數(shù)組,
在循環(huán)中算出之和,編寫過程中行列的值賦值錯(cuò)誤,但經(jīng)過調(diào)試查找出來了;后來在輸出最大子數(shù)組的地方遇到麻煩,
考慮不周全用普遍的? if(j%n==0)cout<<endl;來進(jìn)行換行,導(dǎo)致出現(xiàn)錯(cuò)誤,應(yīng)改為if(j%n==m),m為最大子數(shù)組的第一列,
源代碼:
#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<<"最大子數(shù)組為"<<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<<"數(shù)組的行數(shù): ";cin>>M;if(M<=0){M=0;cout<<"行數(shù)必須大于0"<<endl;}}while(!N){cout<<"數(shù)組的列數(shù): ";cin>>N;if(N<=0){cout<<"列數(shù)必須大于0"<<endl;N=0;}cout<<"輸入數(shù)組的值:"; //輸入二維數(shù)組的值for(i=0;i<M;i++)for(j=0;j<N;j++){cin>>a[i][j];}}cout<<"您輸入的數(shù)組為:" ; //輸出數(shù)組 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<<"子數(shù)組和為:"<<maxson(M,N)<<endl; }?2.運(yùn)行結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/liyawen/p/3611890.html
總結(jié)
以上是生活随笔為你收集整理的[软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 歼20首次列阵迎英烈
- 下一篇: 歼20上航母可能性大增