北大书上的花生问题 经测试 POJ上的无法通过 POJ上的题意看着难度太大 故暂不修改
1#include<iostream>
2#include<stdio.h>
3#include<cmath>
4using namespace std;
5int a[21][21];
6int n,m;
7int r,rr;
8int f()
9{
10 int max=0;
11 for(int i=1;i<=n;i++)
12 for(int j=1;j<=m;j++)
13 {
14 if(max<a[i][j])
15 {
16 max=a[i][j];
17 r=i;
18 rr=j;
19 }
20 }
21 return max;
22}
23int main()
24{
25
26 int htime;
27 int l,ll,t,tt;
28 scanf("%d%d%d",&n,&m,&htime);
29 for(int i=1;i<=n;i++)
30 for(int j=1;j<=m;j++)
31 {
32 scanf("%d",&a[i][j]);
33 }
34 int m=1;
35 int sum=0;
36 while(1)
37 {
38 f();
39 if(f()==0)
40 {
41 printf("%d\n",sum);
42 break;
43 }
44 l=r;
45 ll=rr;
46 if(m==1)
47 {
48 if(ll*2<=htime)
49 {sum+=a[l][ll];
50 htime=htime-ll;
51 a[l][ll]=0;}
52 else
53 {
54 printf("%d\n",sum);
55 break;
56 }
57 }
58 else
59 {
60 if((fabs(l-t)+fabs(ll-tt)+t)<=htime)
61 {
62 sum+=a[l][ll];
63 htime=htime-fabs(l-t)+fabs(ll-tt);
64 a[l][ll]=0;
65 }
66 else
67 {
68 printf("%d\n",sum);
69 break;
70 }
71 }
72 }
73 return 0;
74}