算法矩阵的计算

本文介绍了一个算法问题:如何在一个给定的N阶矩阵中找到一个子矩阵,使其所有元素之和最大。通过遍历矩阵并计算每个可能的子矩阵的元素总和来解决此问题。

算法矩阵的计算

算法矩阵的计算

 

题目大意为给定一个N阶举证(1小于N小于100),矩阵中每一个元素的范围满足[-100,100],请你在这个N阶矩阵中任意找到一个a行b列(a可以等于b)的子矩阵,使得该a行b列子矩阵的所有元素

的和最大。例如:

 0 -2 -7 0
 9 2 -6 2
 -4 1 -4 1
 -1 8 0 -2

 

 9 2
 -4 1
 -1 8

 这个矩阵最大,和为15。找出给定矩阵中子矩阵的最大值

输入: 多组输入,格式为

 第一行N,表示矩阵的大小

 接下来的N行每行N个整数,表示该矩阵第i行的元素

 如果第一行输入的N为0,表示输入结束

 

 

#include
#define N 4
void main()
{
 int i,j,m,n,k=0,l=0,x,y;
 int sum[N*N*N*N]={0};
 int A[N][N]={{0,-2,-7,0},{9,2,-6,2},{-4,1,-4,1},{-1,8,0,-2}};
 for(i=0;i
 for(j=0;j
  
    printf("---------%d-----%d---\n",i,j);
       for(m=0;m+i
   for(n=0;n+j
    
    printf("***********m+i%d*********n+j%d",m,n);
    for(x=i;x<=m+i;x++)
    for(y=j;y<=n+j;y++)
          sum[k]+=A[x][y];
                                printf("      ****sum %d***A %d*****\n",sum[k],A[m+i][n+j]);
       k++;
   }
  k++;
           
 }
  for(m=0;m
     if(sum[0]
   sum[0]=sum[m];
  printf("*******真正见证奇迹的时刻****%d\n",sum[0]);         
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值