首页 > 学院 > 开发设计 > 正文

poj1928

2019-11-10 18:25:56
字体:
来源:转载
供稿:网友

题目大意:

给一个矩阵,代表一片花生地,每个格子的交点可能有花生。一个单位时间可以走一步,或者捡花生。给定K个单位花生,问最多可以捡多少花生。

解题思路:

贪心算法,每次去捡最多的即可

代码如下:

#include<stdio.h>#include<math.h>int main(){ int t; int m, n, k; int num[60][60]; scanf("%d",&t); while (t--) { scanf("%d%d%d",&m,&n,&k); for (int i = 1; i <= m; i++) { for (int j = 0; j < n; j++) { scanf("%d",&num[i][j]); } } int max = 0, x = 0, y = 0; int px=0, py=0; int flag = 0; int total = 0; int ret = 0; while (1) { for (int i = 1; i <= m; i++) { for (int j = 0; j < n; j++) { if (num[i][j] > max) { max = num[i][j]; x = i; y = j; } } } if (flag == 0) { px = 0; py = y; flag = 1; } if (total + abs(x - px) + abs(y - py) + 1 + x <= k) { ret += max; total += abs(x - px) + abs(y - py) + 1; px = x; py = y; num[x][y] = -1; max = 0; } else { PRintf("%d/n",ret); break; } } } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表