博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回一个二维整数数组中最大子数组的和
阅读量:6236 次
发布时间:2019-06-22

本文共 1327 字,大约阅读时间需要 4 分钟。

一、设计思路:

1.先定义一个2*2数组并输入。

2.再求每行中子数组的和,得到一个2*3数组。

3.求每列中子数组的和,最后得到一个3*3数组。

4.求每一列的最大值,得到3个数。

5.3个数比较得到一个最大值即最大子数组的和。

二、代码:

#include<stdio.h>

int main()
{
  int a[2][2];//定义一个2*2的二维数组
  int max;
  int s;
  int count;
  int b[2][3];
  int i,j;
  printf("请输入二维数组:\n");
  for( i=0;i<2;i++)
  {
    for( j=0;j<2;j++)
    {
    scanf("%d",&a[i][j]);
    }

  }

  for( i=0;i<2;i++)
    for( j=0;j<2;j++)
      printf("%d",&a[i][j]);

  for(i=0;i<2;i++)

  {
    count=0;
    for(int j=0;j<2;j++)
    {
     s=0;
     for(int l=0;l<2-j;l++)
     {
      s=s+a[i][j+l];
      b[i][count+l]=s;

     }

        count=count+2-j;
    }
  }
  //求最大子数组的和:
  int c[3][3];
  for(j=0;j<3;j++)
  {
    count=0;
    for(int i=0;i<2;i++)
    {
      s=0;
      for(int l=0;l<2-i;l++)
      {
        s=s+b[i+l][j];
        c[count+l][j]=s;

      }

      count=count+2-i;
    }
  }
  int d,e,f;

  if( c[0][0]>c[1][0]) d = c[0][0];

  else d = c[1][0];
  if( c[2][0]>d) d = c[2][0];

  if( c[0][1]>c[1][1]) e = c[0][1];

  else e = c[1][1];
  if( c[2][1]>d) e = c[2][1];

  if( c[0][2]>c[1][2]) f = c[0][2];

  else f = c[1][2];
  if( c[2][2]>d) f = c[2][2];

  if( d>e) max = d;
  else max = e;
  if( f>max) max = f;
  printf("\n最大子数组和为:");
  printf("%d\n",max);

  return 0;

}

三、运行结果:

四、psp0

 

 

五、心得体会

    上课认真听讲,下课要多看书。

 

转载于:https://www.cnblogs.com/gaoemm/p/9824903.html

你可能感兴趣的文章
centos7安装redis
查看>>
多说评论一次导回 Typecho 本地数据库
查看>>
TechEd 2011微软技术大会热门课程曝光
查看>>
分布式锁之Redis实现
查看>>
【解惑】领略内部类的内部
查看>>
PHP的autoload机制的实现解析
查看>>
献给未来的自己
查看>>
MySQL:远程登录
查看>>
Oracle事务和常用数据对象
查看>>
Linux:xterm基本配置
查看>>
windows、mac桌面录制GIF
查看>>
Android应用Context详解及源码解析
查看>>
jquery采用JS实现高度自适应问题
查看>>
Ubuntu搭建nexus oss3.0私服
查看>>
学会透过现象看本质,即使现象有时候挺诡异
查看>>
oracle数据库的字符集更改
查看>>
让代码飞起来——高性能Julia学习笔记(一)
查看>>
慢连接***的原理和防范
查看>>
windows client连linux下的oracle server,ORA-12560: TNS: 协议适配器错误 一例
查看>>
Oracle物化视图之on prebuilt table
查看>>