1. 程式人生 > >十六:矩陣數字求和

十六:矩陣數字求和

while close 斜線 不一定 ring 給定 scan log pos

問題 : 矩陣數字求和
題目描述

給定一個數字矩陣,數字中間用空格分開。
求:行,列,45°斜線(不一定是對角線) 中,和最大的是多少
輸出:這個最大的和.
比如矩陣
9 8 2 2
2 4 1 5
1 5 1 2
1 15 6 3
2 1 56 3
中,和最大的是 1 15 56 這個斜線。需要輸出:72
輸入
第一行兩個數,表示矩陣的行、列。行列的數字均小於10
之後是矩陣
輸出
一個數字,即最大的和是多少
樣例輸入
5 4
9 8 2 2
2 4 1 5
1 5 1 2
1 15 6 3
2 1 56 3
樣例輸出

72

 1 #include<stdio.h>
 2 #include<string
.h> 3 int main(){ 4 freopen("in.txt", "r", stdin); 5 freopen("out.txt", "w", stdout); 6 int a[11][11]; 7 int row,col; 8 int i,j,m=0,sum=0,b=0; 9 scanf("%d %d",&row,&col); 10 for(i=0;i<row;i++){ 11 for(j=0;j<col;j++){ 12 scanf("%d",&a[i][j]);
13 } 14 } 15 for(i=0;i<row;i++){ 16 for(j=0;j<col;j++){ 17 sum=0; 18 b=0; 19 while(i+b<row){ 20 sum+=a[i+b][j]; 21 b++; 22 } 23 if(sum>m){ 24 m=sum;
25 } 26 sum=0; 27 b=0; 28 while(j+b<col){ 29 sum+=a[i][j+b]; 30 b++; 31 } 32 if(sum>m){ 33 m=sum; 34 } 35 sum=0; 36 b=0; 37 while(i+b<row&&j+b<col){ 38 sum+=a[i+b][j+b]; 39 b++; 40 } 41 if(sum>m){ 42 m=sum; 43 } 44 b=0; 45 sum=0; 46 while(i-b>=0&&j+b<col){ 47 sum+=a[i-b][j+b]; 48 b++; 49 } 50 if(sum>m){ 51 m=sum; 52 } 53 54 } 55 } 56 printf("%d",m); 57 fclose(stdin); 58 fclose(stdout); 59 return 0; 60 }

十六:矩陣數字求和