矩阵求和

 

 第一次做时理解错了题意,只算了中间对角线构成的十字形,题目真正的意思是由边abcd的中点依次连接组成的矩形所包含的所有点的值的和。

可以将这个矩形看成被一个十字形分成了四个象限,然后分别求出四个象限的和,加在一起后十字形被加了两次,中间十字焦点被加了四次,则我们减掉一次十字形,两次焦点即为总面积。

 

 AC代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int a[110][110];
 5 
 6 int main(){
 7     int cnt=1;
 8     for(int i=1;i<=101;i++){
 9         for(int j=1;j<=101;j++){
10             a[i][j]=cnt++;
11         }
12     }
13     /*for(int i=1;i<=101;i++){
14         for(int j=1;j<=101;j++){
15             cout<<a[i][j]<<" ";
16         }cout<<endl;
17     }*/
18     cnt=0;
19     int sum=0;
20     for(int i=1;i<=101;i++){
21         sum+=a[i][51];
22         sum+=a[51][i];
23     }
24     for(int i=1;i<=51;i++){
25         for(int j=51;j>51-i;j--){
26             cnt+=a[i][j];
27         }
28     }
29     for(int i=1;i<=51;i++){
30         for(int j=51;j<51+i;j++){
31             cnt+=a[i][j]; 
32         }
33     }
34     for(int i=51;i<=101;i++){
35         for(int j=51;j>i-51;j--){
36             cnt+=a[i][j];
37         }    
38     }
39     for(int i=51;i<=101;i++){
40         for(int j=51;j<=152-i;j++){
41             cnt+=a[i][j];
42         }
43     }
44     cnt-=sum;
45     cnt-=a[51][51];
46     cout<<cnt<<endl;
47     return 0;
48 }

 

posted @ 2018-03-30 20:02  Kiven#5197  阅读(375)  评论(0编辑  收藏  举报