The Best Seat in ACM Contest

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2409

View Code
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a[22][22],v[21][21],i,j,m,n,t,k,flag,mf,nf;
 5     scanf("%d",&t);
 6     for(k=1;k<=t;k++)
 7     {
 8         scanf("%d%d",&m,&n);
 9         flag=0;
10         for(i=0;i<=21;i++)
11         {
12             for(j=0;j<=21;j++)
13             {
14                 a[i][j]=0;
15             }
16         }
17         for(i=1;i<=m;i++)
18         {
19             for(j=1;j<=n;j++)
20             {
21                 scanf("%d",&a[i][j]);
22                 v[i][j]=0;
23             }
24         }
25         for(i=1;i<=m;i++)
26         {
27             for(j=1;j<=n;j++)
28             {
29                 if(a[i-1][j]) v[i][j]+=a[i-1][j]-a[i][j];
30                 else v[i][j]--;
31                 if(a[i+1][j]) v[i][j]+=a[i+1][j]-a[i][j];
32                 else v[i][j]--;
33                 if(a[i][j-1]) v[i][j]+=a[i][j-1]-a[i][j];
34                 else v[i][j]--;
35                 if(a[i][j+1]) v[i][j]+=a[i][j+1]-a[i][j];
36                 else v[i][j]--;
37             }
38         }
39         for(i=1;i<=m;i++)
40         {
41             for(j=1;j<=n;j++)
42             {
43                 if(v[i][j]>flag)
44                 {
45                     flag=v[i][j];
46                     mf=i;
47                     nf=j;
48                 }
49             }
50         }
51         printf("Case %d: %d %d %d\n",k,flag,mf,nf);
52     }
53     return 0;
54 }

1.各队实力可以表示为一个正整数。
2.一个座位的值与相邻的座椅(上/下/左/右,只有四个方向被考虑)。
3.相邻的座位,如果这支球队的实力比你强,两支球队相差的绝对值应该被加入到你的座位,否则,差的绝对值应减去您的座位。
4.如果相邻的座位是空的(这意味着您位于最左/右/上/下),你的座位应减去1。
5.在比赛中最好的一个,是座具有最高的价值。
6.座椅的初始值是零。

原文地址:https://www.cnblogs.com/yelan/p/2941964.html