找路径使其和最大

2019-05-09  本文已影响0人  suntwo

题目描述

课å__ä¹ é¢_13.jpg

代码

#include <stdio.h>
#include <stdlib.h>
int a[6][7]={
16,4,3,12,6,0,3,
4,-5,6,7,0,0,2,
6,0,-1,-2,3,6,8,
5,3,4,0,0,-2,7,
-1,7,4,0,7,-5,6,
0,-1,3,4,12,4,2
};  //存储数据
int output()   //输出数据
{
    int i,j;
    for(i=0;i<6;++i)
    {
         for(j=0;j<7;++j)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
int chuli()
{
    int i,j,sum=0;
    for(i=1;i<6;++i)   //遍历每个列
    {
        for(j=0;j<7;++j)   //遍历一行
        {
            int max=-10000; //暂时存放最大值
            int d;
            for(d=j-2;d<=j+2;++d)      //找相邻的五个最大的
            {
                if(d>=0 && d<7)    //判断是否越界
                {
                    if(max<a[i][j]+a[i-1][d])
                        max=a[i][j]+a[i-1][d];
                }
            }
            a[i][j]=max;
        }
    }
}
int main()
{
    output();    //输出数据
    chuli();
    printf("\n\n\n\n\n\n");
    output();    //输出数据
    return 0;
}

结果

  16   4   3  12   6   0   3
   4  -5   6   7   0   0   2
   6   0  -1  -2   3   6   8
   5   3   4   0   0  -2   7
  -1   7   4   0   7  -5   6
   0  -1   3   4  12   4   2






  16   4   3  12   6   0   3
  20  11  22  19  12  12   8
  28  22  21  20  25  25  20
  33  31  32  25  25  23  32
  32  40  37  32  39  27  38
  40  39  43  44  51  43  41
上一篇 下一篇

猜你喜欢

热点阅读