案例能过,60分,求助
查看原帖
案例能过,60分,求助
665213
iamecho9楼主2022/2/5 21:12
using namespace std;
#include<iostream>
int main()
{
	int n, m, time, time0, a[25][25], total = 0;
	cin >> n >> m >> time;
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j)
			cin >> a[i][j];//初始化花生田
	int x = 0, y = 0;//记录初始位置
	while (time)
	{
		int i, j;
		int max = 0;
		int maxi, maxj;
		for (i = 1; i <= n; ++i)
			for (j = 1; j <= m; ++j)
			{
				if (a[i][j] > max)
				{
					max = a[i][j];
					maxi = i;
					maxj = j;
				}
			}//找到花生最多的植株坐标
		if (max == 0)
			break;//地里没有花生了
		if (x == 0)
			time0 = maxi - x;//第一次进入花生田
		else
		{
			if (maxi >= x && maxj >= y)
				time0 = maxi - x + maxj - y;
			if (maxi >= x && maxj < y)
				time0 = maxi - x + y - maxj;
			if (maxi < x && maxj >= y)
				time0 = x - maxi + maxj - y;
			if (maxi < x && maxj < y)
				time0 = maxi - x + maxj - y;
		}//计算从当前位置到目标植株所需的时间time0
		if (time < time0 + maxi + 1)
			break;//时间不够返回
		time -= time0;
		total += a[maxi][maxj];
		a[maxi][maxj] = 0;
		time--;
		x = maxi;
		y = maxj;
	}
	cout << total;
	return 0;
}
2022/2/5 21:12
加载中...