广东深圳龙岗区区号,衡水seo培训,手术室专科建设网站,北京小企业网站建设题目描述
鲁宾逊先生有一只宠物猴#xff0c;名叫多多。这天#xff0c;他们两个正沿着乡间小路散步#xff0c;突然发现路边的告示牌上贴着一张小小的纸条#xff1a;“欢迎免费品尝我种的花生#xff01;――熊字”。
鲁宾逊先生和多多都很开心#xff0c;因为花生正…题目描述
鲁宾逊先生有一只宠物猴名叫多多。这天他们两个正沿着乡间小路散步突然发现路边的告示牌上贴着一张小小的纸条“欢迎免费品尝我种的花生――熊字”。
鲁宾逊先生和多多都很开心因为花生正是他们的最爱。在告示牌背后路边真的有一块花生田花生植株整齐地排列成矩形网格如图一。有经验的多多一眼就能看出每棵花生植株下的花生有多少。为了训练多多的算术鲁宾逊先生说“你先找出花生最多的植株去采摘它的花生然后再找出剩下的植株里花生最多的去采摘它的花生依此类推不过你一定要在我限定的时间内回到路边。” 我们假定多多在每个单位时间内可以做下列四件事情中的一件
从路边跳到最靠近路边即第一行的某棵花生植株从一棵植株跳到前后左右与之相邻的另一棵植株采摘一棵植株下的花生从最靠近路边即第一行的某棵花生植株跳回路边。
现在给定一块花生田的大小和花生的分布请问在限定时间内多多最多可以采到多少个花生注意可能只有部分植株下面长有花生假设这些植株下的花生个数各不相同。
例如在图2所示的花生田里只有位于 (2,5),(3,7),(4,2),(5,4) 的植株下长有花生个数分别为 13,7,15,9。沿着图示的路线多多在 21 个单位时间内最多可以采到 37 个花生。
注意在采摘过程中不能回到路边。
输入格式
第一行包括三个整数M,N和K用空格隔开表示花生田的大小为M×N(1≤M,N≤20)多多采花生的限定时间为K(0≤K≤1000)个单位时间。接下来的M行每行包括N个非负整数也用空格隔开第i1行的第j个整数Pij(0≤Pij≤500)表示花生田里植株(i,j)下花生的数目0表示该植株下没有花生。
输出格式
一个整数即在限定时间内多多最多可以采到花生的个数。
输入输出样例
输入 #1 6 7 21
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0 输出 #1 37 输入 #2 6 7 20
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0 输出 #2 28 说明/提示
noip2004普及组第2题
思路
暴力枚举
完整代码
#includebits/stdc.h
using namespace std;
int a[10001][10001],b[10001][10001];
int n, m, k;
int q, ans;
int main(){cinmnk;for (int i1; im; i)for (int j1; jn; j){cina[i][j];if (a[i][j]!0){q;b[q][1]i;b[q][2]j;b[q][3]a[i][j];} }for(int i1; iq; i)for(int ji1; jq; j){if (b[i][3]b[j][3]){swap(b[i][3], b[j][3]); swap(b[i][1], b[j][1]); swap(b[i][2], b[j][2]);}}if (k(b[1][1]*21)) ansb[1][3];else{cout 0 endl;return 0;}kk-b[1][1]-1;for(int i2; iq; i){if (abs(b[i-1][1]-b[i][1])abs(b[i-1][2]-b[i][2])1b[i][1]k)break;else {ansb[i][3]; kk-(abs(b[i-1][1]-b[i][1])abs(b[i-1][2]-b[i][2])1);}} coutansendl;return 0;
}