C 在二维数组中寻找路径最大值

C 在二维数组中寻找路径最大值,c,C,万圣节即将来临,是玩不给糖就捣蛋的时候了。您居住在n-by-n城镇地图的左上角,前往位于右下角的万圣节派对。在你的旅行中,你决定参观最少数量的房子以获得款待。你有一张城镇地图,上面有食物数量的信息≥ 0在每个位置都可用。例如,n=3的城镇地图如下所示 6 8 2 4 5 1 3910 为了得到最大的款待,你将从6号家开始,然后向东到8号家,再向南到5号家,再向南到9号家,再向东到10号家,最后到达派对 所以治疗的次数是6+8+5+9+10=38 请注意,要访问最少数量的房屋,您必须从一个房屋向东

万圣节即将来临,是玩不给糖就捣蛋的时候了。您居住在n-by-n城镇地图的左上角,前往位于右下角的万圣节派对。在你的旅行中,你决定参观最少数量的房子以获得款待。你有一张城镇地图,上面有食物数量的信息≥ 0在每个位置都可用。例如,n=3的城镇地图如下所示

6 8 2

4 5 1

3910

为了得到最大的款待,你将从6号家开始,然后向东到8号家,再向南到5号家,再向南到9号家,再向东到10号家,最后到达派对

所以治疗的次数是6+8+5+9+10=38

请注意,要访问最少数量的房屋,您必须从一个房屋向东或向南旅行到下一个房屋,直到到达聚会地点。要获得最大款待,请在访问每家时跟踪当前最大款待

6,14,2+14=16

10,5+max10,14=19

3+10=13

所以程序需要选择要加的最大值,比如10和14,我会选择加14。但是我在使用for循环时遇到了问题。有人能帮忙吗

1包括 2. 3定义尺寸10 4. 5 int-pathmaxint-map[][SIZE],int-n; 6无效读入图[]尺寸],内部n; 7整数最大整数x,整数y; 8. 9 int mainvoid 10 { 11整数映射[大小][大小],n; 12 13印刷工n:; 14扫描%d,&n; 15 16读图,n; 17 18 printfmax:%d\n,路径maxmap,n; 19 20返回0; 21 } 22 23整数最大整数x,整数y 24 { 25如果x>y 26返回x; 27其他 28返回y; 29 } 30 31 int-pathmaxint映射[][SIZE],int n 32 { 33 int k,i,j; 34 35表示k=1;k<2*n-1;k++ 36表示i=0;i递归解,老师会相信你写的吗

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXTREAT    10
#define GRID        3

int map [GRID][GRID];
int maxtreats;

void explore(int x, int y, int treats)
{
    treats += map [y][x];
    if (x == GRID-1 && y == GRID-1) {   // reached bottom right?
        if (treats > maxtreats)         // check result
            maxtreats = treats;         // finish recursion
    } else {                            // recurse
        if (x+1 < GRID)
            explore (x+1, y, treats);   // go east
        if (y+1 < GRID)
            explore (x, y+1, treats);   // go south
    }
}

int main()
{
    int x, y;
    srand ((unsigned int)time(NULL));  // seed random num gen
    for (x=0; x<GRID; x++) {           // set up random map
        for (y=0; y<GRID; y++) {
            map[y][x] = 1 + rand() % MAXTREAT;
            printf ("%4d", map[y][x]);
        }
        printf ("\n");
    }
    explore (0, 0, 0);
    printf ("Max treats %d\n", maxtreats);
    return 0;
}

看起来今年不会有人得到很多糖果。因为这是一个家庭作业,所以试试你的教授。因为循环与你不能选择最多两个数字无关。这可以通过条件if或?:运算符和=。