SUMと前列i及び列jの前のすべての要素[I] [j]を表します
私は> = X && J> = Y、我々は前の行の前に満たすために、マトリックスサイズのj列を見つけることができるときに私
我々i、jは大小規模を探していたようなので、すべての時間が比較対象行列の右下隅など[i]の[j]を見つけるために
これは漏れない重量はありません
トピックコード
書式#include <iostreamの> 書式#include <stdio.hに> する#include < 文字列の.h> 使用して 名前空間はstdを、 typedefの長い 長いLL。 const int型 MAXN = 1007 ; int型、T、M、N、X、Y。 INT [MAXN] [MAXN]和[MAXN] [MAXN]。 INT メイン(){ scanf関数(" %のD "、&T)。 一方、(t-- ){ memsetの(和、0、はsizeof (合計))。 scanf関数(" %D%D%D%D "、&N、&M、およびX&Y); int型 MAXX = 0 ; 以下のために(int型 i = 1 ; iが<= N; iは++ ){ ための(int型 J = 1 ; J <= Mであり、j ++ ){ scanf関数(" %のD "、および[I] [J])。 和[I] [J] =和[I- 1 ] [J] +和[I]、[J- 1 ] + [I] [J] -sum [I- 1 ] [J- 1 ]。 もし(I> = X && J> = Y)MAXX = MAX(MAXX、和[I] [J] -sum [IX] [J] -sum [I] [JY] +和[IX] [JY ]) ; } } printf("%D \ n " 、MAXX); } 戻り 0 ; }