最大子数组(3)
一、题目及要求:
返回一个整数数组中最大子数组的和
输入一个二维整形数组,数组里有正数也有负数;二维数组首尾相接,像一条首尾相接的带子一样。
二、设计思路:
这个题目其实与上次毫无区别,仍然调用循环一维数组求最大子数组的函数,将二维数组列的情况全
部列出,即转化为一维数组。a[0][0],a[0][0]a[0][1]........。在调用函数即可。
二、源代码
1 #include<iostream.h> 2 int max2(int arry[],int length) //跨越arry[n-1]、arry[0]的最大和 3 { 4 int total=0; 5 int sum=arry[0]; 6 int minsum=arry[0]; 7 for(int i=1;i<length;i++) 8 { 9 if(sum>0) 10 { 11 sum=arry[i]; 12 } 13 else 14 { 15 sum=sum+arry[i]; 16 17 } 18 if(minsum>=sum) 19 { 20 minsum=sum; 21 } 22 total=total+arry[i]; 23 } 24 total=total+arry[0]; 25 minsum=total-minsum; 26 27 return minsum; 28 } 29 30 31 int max1(int arry[],int length) //不跨越零点的最大和 32 { 33 int sum=arry[0]; 34 int maxsum=arry[0]; 35 for(int i=1;i<length;i++) //求出相邻数组最小和 36 { 37 if(sum<0) 38 { 39 sum=arry[i]; 40 } 41 else 42 { 43 sum=sum+arry[i]; 44 45 } 46 if(maxsum<=sum) 47 { 48 maxsum=sum; 49 } 50 } 51 //struct ret ret1={maxsum,start2,end}; 52 return maxsum; 53 } 54 int column(int a[][20],int length,int num1) //求最大和 55 { 56 int y=0; 57 int d[20]; 58 int e[100]; 59 int c[100][20]; 60 c[0][0]=0; 61 int p=0; 62 int b[100]={0}; 63 for(int j=0;j<num1;j++) 64 { 65 for(int t=j;t<num1;t++) 66 { 67 for(int i=0;i<length;i++) 68 { 69 b[i]=b[i]+a[t][i]; 70 c[p][i]=b[i]; 71 } 72 p=p+1; 73 } 74 for(int o=0;o<100;o++) 75 { 76 b[o]=0; 77 } 78 } 79 for(int l=0;l<p;l++) 80 { 81 82 for(int u=0;u<length;u++) 83 { 84 d[u]=c[l][u]; 85 //cout<<d[u]<<" "; 86 } 87 e[y++]=max1(d,length); 88 e[y++]=max2(d,length); 89 //cout<<e[y-1]<<" "; 90 } 91 int Max=e[0]; 92 for(int i=0;i<y;i++) 93 { 94 95 if(e[i]>=Max) 96 { 97 Max=e[i]; 98 } 99 } 100 return Max; 101 } 102 int main() 103 { 104 int a[20][20]; 105 int length,index; 106 107 cout<<"输入行数列数:"; 108 cin>>index>>length; 109 110 int y=0; 111 for(int i=0;i<index;i++) 112 { 113 for(int j=0;j<length;j++) 114 { 115 cin>>a[i][j]; 116 } 117 } 118 119 int s=column(a,length,index); 120 cout<<"最大和为:"<<s<<endl; 121 return 0; 122 }
四、截图
五、感想
对于这次实验仅简单的调用了上次函数,用时很少。不过这次我领航,没有书写任何代码,当看到伙伴再写代码
时,似乎看到自己最容易犯的错,例如大括号,即等号与赋值号。当他写代码时,也比只看着更有感觉,交换一下
位置原来可以看到的更多。也许,好像这是最后一次结对开发,在此,感想一直相互合作的队友,亦是兄弟。
结对开发伙伴:李青 http://www.cnblogs.com/liqing1/