• 结对开发2//返回一个二维整数组中最大子数组的和


    题目:返回一个二维整数数组中最大子数组的和

    要求:

    1.输入一个二维整型数组,数组里有正数也有负数       

    2.二维数组中,连续的一个子矩阵组成一个子数组,每个子数组都有一个和  

    3.求所有子数组和

    同组人:林梦颖

    源程序:

     1 #include <stdio.h>
     2 int MAX(int a, int b)//求最大值
     3 {
     4     if (a > b)
     5         return a;
     6     else
     7         return b;
     8 }
     9 int main(void)
    10 {
    11     int a[3][6] = { { 5, 6, -3, 8, -9, 2 }, { 1, -12, 20, 0, -3, -5 }, { -9, -7, -3, 6, 7, -1 } };//先定义一个数组
    12     printf("array a:
    ");
    13     for (int i = 0; i<3; i++)
    14     {
    15         for (int j = 0; j<6; j++)
    16         {
    17             printf("%5d", a[i][j]);
    18         }
    19         printf("
    ");
    20     }
    21 
    22     int i, j, m=3, n=6,sum;
    23     int p[3][6];
    24     int max = a[0][0];
    25     for (i = 0; i<n; i++)
    26     {
    27     
    28         for (j = 0; j<m; j++)
    29         {
    30             if (i == 0)
    31             {
    32                 if (j == 0)
    33                 {
    34                     p[i][j] = a[i][j];
    35                     sum = p[i][j];
    36                     max = MAX(sum, max);
    37 
    38                 }
    39                     
    40                 else
    41                 {
    42                     p[i][j] = p[i][j - 1] + a[i][j];
    43                     sum = p[i][j];
    44                     max = MAX(sum, max);
    45                 }
    46                     
    47             }
    48             else
    49             {
    50                 if (j == 0)
    51                 {
    52 
    53                     p[i][j] = p[i - 1][j] + a[i][j];
    54                     sum = p[i][j];
    55                     max = MAX(sum, max);
    56                 }
    57                 else
    58                 {
    59                     p[i][j] = p[i][j - 1] + p[i - 1][j] - p[i - 1][j - 1] + a[i][j];
    60                     sum = p[i][j];
    61                     max = MAX(sum, max);
    62                 }
    63             }
    64         }
    65     }
    66     printf("maxsum=%d", max);
    67     getchar();
    68     getchar();
    69     return 0;
    70 }

    运行结果:

    总结:  在本次任务中,看似简单清晰的思路,在代码上实践起来却遇到了重重困难。最初的想法是遍历整个子数组,发现时间复杂度太大,完成起来较为困难。经过和组员一同寻找网络资料,翻阅图书,找到较为简便的思路方法,将这个方法逐步呈现在电脑屏幕上。由最初的简陋的框架,一步步将其完善。最终圆满完成了老师布置的任务。从最初的遥不可及到完成任务,是一个完善学习完善自己的一个路程,今后也会不放弃的坚持完成每一次作业,更上一层楼! 

  • 相关阅读:
    ssm整合用到的依赖jar包(不充足)
    eclipse中Maven web项目的目录结构浅析
    何时使用抽象类?何时使用接口?
    $().attr() 和 $().css的区别
    AJAX防重复提交的办法总结
    CentOS 8 扩展LVM,更改xfs卷报错解决方法
    安装Minikube无法访问k8s.gcr.io的简单解决办法
    Windows 10、Ubuntu 18.04 双系统 双硬盘 安装经验总结
    转眼十年
    Dresdon二次开发
  • 原文地址:https://www.cnblogs.com/DreamerT/p/9825848.html
Copyright © 2020-2023  润新知