Хэллоуин за углом, и пришло время для хитрости или лечения. Вы находитесь в верхнем левом углу карты города n-by-n и отправляетесь на вечеринку на Хэллоуин, расположенную в нижнем правом углу. Во время вашей поездки вы решили посетить минимальное количество домов, чтобы угоститься. У вас есть карта города с информацией о количестве угощений (≥ 0), доступных в каждом месте. Например, карта города для n = 3 показана ниже.Поиск максимума пути в 2D-массиве
Чтобы получить максимум удовольствия, вы будете исходить из дома (6), а затем на восток до (8), а затем на юг на (5), затем на юг (9), затем на восток (10) и заканчивается на стороне.
Таким образом, количество обработок равно 6 + 8 + 5 + 9 + 10 = 38.
Обратите внимание, что для посещения минимального количества домов вам необходимо либо отправиться на восток, либо на юг из одного дома в другой, пока вы не придете на вечеринку. Чтобы получить максимальные удовольствия, отслеживайте текущий максимум при посещении каждого дома.
6, 14, 14 + 2 = 16
10, 5 + макс (10,14) = 19
3 + 10 = 13
Таким образом, программа должна быть выбирая максимальное значение для добавления, скажем, для 10 и 14, я хочу добавить 14. Но у меня проблемы с этим использованием для циклов. Кто-нибудь может помочь?
1 #include <stdio.h>
2
3 #define SIZE 10
4
5 int pathmax(int map[][SIZE], int n);
6 void read(int map[][SIZE], int n);
7 int max(int x, int y);
8
9 int main(void)
10 {
11 int map[SIZE][SIZE], n;
12
13 printf("Enter n: ");
14 scanf("%d", &n);
15
16 read(map,n);
17
18 printf("Maximum: %d\n", pathmax(map,n));
19
20 return 0;
21 }
22
23 int max(int x, int y)
24 {
25 if (x > y)
26 return x;
27 else
28 return y;
29 }
30
31 int pathmax(int map[][SIZE], int n)
32 {
33 int k, i, j;
34
35 for (k = 1; k < 2*n-1; k++)
36 for (i = 0; i < n; i++)
37 for (j = 0; j < n; j++)
if(i+j==k)
{
if (i==0)
map[i][j] += map[i][j-1];
else if (j == 0)
map[i][j] += map[i-1][j];
else
map[i][j] += max(map[i-1][j], map[i][j-1];
}
}
Похоже, что в этом году кто-то не получит много конфет. –
Так как это домашнее задание, попробуйте своего профессора. – Celeo
Для петель не имеет ничего общего с вашей неспособностью выбрать максимум двух чисел. Это может быть достигнуто условным (или 'if' или'?: 'Operator) и одним из' <', '<=', '> ','> = '. –