zoukankan      html  css  js  c++  java
  • 1、2维最大子段和

    1. #include <stdio.h>
    2. #include <string.h>
    3. #include <stdlib.h>
    4. #define MAX 1000
    5. int MaxSubInterval(int a[], int n) //标准的一维最大子段和
    6. {
    7. int sum = 0, tp = 0;
    8. for(int i=0; i<n; i++)
    9. {
    10. if(tp > 0)
    11. tp += a[i];
    12. else
    13. tp = a[i];
    14. if(sum < tp)
    15. sum = tp;
    16. }
    17. return sum;
    18. }
    19. int MaxSubMartix(int a[][MAX], int m, int n) //二维最大子段和问题
    20. {
    21. int tp[MAX], sum = 0;
    22. for(int i=0; i<m; i++)
    23. {
    24. memset(tp, 0, sizeof(tp) );
    25. for(int j=i; j<m; j++)
    26. {
    27. for(int k=0; k<n; k++)
    28. tp[k] += a[j][k];
    29. int max = MaxSubInterval(tp, n);
    30. if(max > sum) sum = max;
    31. }
    32. }
    33. return sum;
    34. }
    35. /*
    36. int MaxSubInterval(int a[], int n, int size_y) //一维的n个数的最大子段和
    37. {
    38. int sum = 0, tp;
    39. for(int i=0; i<n-size_y; i++)
    40. {
    41. tp = 0;
    42. for(int j=i; j<i+size_y; j++)
    43. {
    44. if(tp > 0)
    45. tp += a[j];
    46. else
    47. tp = a[j];
    48. }
    49. if(sum < tp)
    50. sum = tp;
    51. }
    52. return sum;
    53. }
    54. int MaxSubMartix(int a[][MAX], int m, int n, int size_x, int size_y) //二维size_x * size_y 个数的最大子段和
    55. {
    56. int tp[MAX], sum = 0;
    57. for(int i=0; i<m-size_x; i++)
    58. {
    59. memset(tp, 0, sizeof(tp) );
    60. for(int j=i; j<i+size_x; j++)
    61. {
    62. for(int k=0; k<n; k++)
    63. tp[k] += a[j][k];
    64. }
    65. int max = MaxSubInterval(tp, n, size_y);
    66. if(max > sum) sum = max;
    67. }
    68. return sum;
    69. }
    70. */





    附件列表

    • 相关阅读:
      APP支付,后台支付宝生成预支付设置超时时间timeout_express无效,使用time_expire代替
      一些学习资料
      自连接
      模型成员
      模型查询
      模板
      管理站点
      视图
      设计模型
      搭建开发环境
    • 原文地址:https://www.cnblogs.com/sober-reflection/p/61b4f77e8e98092b5ec2d10a54d04c9e.html
    Copyright © 2011-2022 走看看