首页 > 编程语言 > 详细

二维数组

时间:2015-03-22 19:21:20      阅读:346      评论:0      收藏:0      [点我收藏+]

 一.题目:

程序要使用的数组放在一个叫 input.txt 的文件中,  文件格式是: 数组的行数, 数组的列数, 每一行的元素,  (用逗号分开) 每一个数字都是有符号32位整数, 当然, 行数和列数都是正整数。

二.思路分析:

1.我们先建立一个新的二维数组b[n][m]

  二维数组b[j][k] 存放的是a[j][k](0<=j<n,0<=k<m) 这一点到 a[0][0]  的最大值

2.具体循环工作:

       当循环到a[j][k](0<=j<n,0<=k<m),则求的是 a[j][k]到 a[0][0]  的最大值

3.计算方法:

           b[j][k]=a[j][k]+b[j-1][k]+b[j][k-1]-b[j-1][k-1],若b[j][k]<0,则赋值为0;每次计算完成后,都需要与max进行比较。

三.代码:

#include<iostream>
using namespace std;
int main()
{
int i,j;
int a[3][3]={-1,-2,1,-3,4,2,3,20,-5};
int b[3][3];
int max=a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<<a[i][j]<<‘\t‘;
}
cout<<endl;
}
for(i=0;i<1;i++)
{
b[0][0]=a[0][0];
for(j=0;j<3;j++)
{
if(a[0][j-1]<0)
{
b[0][j]=a[0][j];
}
else
{
b[0][j]=b[0][j-1]+a[0][j];
}
}
}
for(i=1;i<3;i++)
{
for(j=0;j<1;j++)
{
if(a[i-1][0]<0)
{
b[i][0]=a[i][0];
}
else
{
b[i][0]=b[i-1][0]+a[i][0];
}
}
}
for(i=1;i<3;i++)
{
for(j=1;j<3;j++)
{
if(b[i-1][j-1]<0)
{
if(b[i-1][j]>=0&&b[i][j-1]>=0)
{
if(b[i][j-1]>=b[i-1][j])
{
b[i][j]=b[i][j-1]+a[i][j];
}
else
{
b[i][j]=b[i-1][j]+a[i][j];
}
}
else if(b[i-1][j]>=0&&b[i][j-1]<=0)
{
b[i][j]=b[i-1][j]+a[i][j];
}
else if(b[i-1][j]<=0&&b[i][j-1]>=0)
{
b[i][j]=b[i][j-1]+a[i][j];
}
else
{
b[i][j]=a[i][j];
}
}
else
{
if(b[i-1][j]>=0&&b[i][j-1]>=0)
{
b[i][j]=a[i][j]+b[i-1][j]+b[i][j-1]-b[i-1][j-1];
}
else if(b[i-1][j]>=0&&b[i][j-1]<=0)
{
b[i][j]=a[i][j]+b[i-1][j]-b[i-1][j-1];
}
else if(b[i-1][j]<=0&&b[i][j-1]>=0)
{
b[i][j]=a[i][j]+b[i][j-1]-b[i-1][j-1];
}
else
{
b[i][j]=a[i][j];
}
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(b[i][j]>max)
max=b[i][j];
}
}
cout<<"最大子数组的和为:"<<max<<endl;
return 0;
}

四.结果截图:

技术分享

 

 

 

技术分享

五.总结:

     本次设计让我更加深刻的认识到了结对开发的重要性,我和崔鹏勃确定算法以后,在编程的时候遇到了难题,通过讨论将代码实现,比如说我们在循环计算的时候,对如何实现所有的可能性进行了讨论等。

 

二维数组

原文:http://www.cnblogs.com/littilsaber/p/4357743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!