只有10分,但例子都能通过啊,求助大佬
查看原帖
只有10分,但例子都能通过啊,求助大佬
830669
TrappedGhost楼主2022/10/28 14:23

求助大佬,不知为啥就10分。自己运行例子都能过的

#include<iostream>
#include<cmath>
using namespace std;

int arr2[501][2];//用于保存每次采完果子后的位置
int arr[100][100];
int n, m, t;
int x = 0, y = 0;//x来记录每次采了多少,y,来记录一共多少
int a, b;
int main()
{

    输入数据
	cin >> n >> m >> t;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			cin >> arr[i][j];
		}
	}

    //第一次采果子是从路边出发,单独处理
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (x < arr[i][j]) {
				x = arr[i][j];
				a = i + 1;
				b = j + 1;
			}
		}
	}
	arr[a - 1][b - 1] = 0; //采完果子后,果子清零
	
    t = t - a - 1;     //减去消耗时间
	if (t - a < 0) {   //判断时间是否足够回去,若不能回去则证明时间不够
		cout << 0;
		return 0;
	}

	y += x;

	arr2[t][1] = a;  //保存这次的位置,用于下次计算时间
	arr2[t][2] = b;


    //往后进入循环处理
	while (t > 0) {
		x = 0;
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (x < arr[i][j]) {
					x = arr[i][j];
					a = i + 1;
					b = j + 1;
				}
			}
		}
		arr[a - 1][b - 1] = 0;
		t = t - abs(arr2[t][1] - a) - abs(arr2[t][2] - b) - 1;
		if (t - a < 0) {
			cout << y;
			return y;
		}
		y += x;
		arr2[t][1] = a;
		arr2[t][2] = b;
	}
	cout << y;
	return 0;
}```
2022/10/28 14:23
加载中...