zoukankan      html  css  js  c++  java
  • 动态规划求数塔问题

    问题描述如下:


    具体解决方案如下:

    {    其中2.txt中保存的数据为:

       

    }

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 int m;
     4 void dqta(int **data,int **d);
     5 int max(int,int);
     6 void fpath(int **data,int **d,int *path);
     7 void main()
     8 {
     9     int i,j;
    10     FILE *p;
    11     p=fopen("2.txt","r");
    12     if(p==NULL)
    13     {
    14         printf("读取文件失败!\n");
    15         exit(1);
    16     }
    17     else
    18         fscanf(p,"%d",&m);
    19     //创建动态数组;
    20     int **data=(int **)malloc(sizeof(int *)*m);
    21     for(i=0;i<m;i++)
    22         data[i]=(int *)malloc(sizeof(int)*m);
    23     int **d=(int **)malloc(sizeof(int *)*m);
    24     for(i=0;i<m;i++)
    25         d[i]=(int *)malloc(sizeof(int)*m);
    26 
    27     int *path=(int *)malloc(sizeof(int)*m);
    28     //读取文件中的数据;
    29     for(i=0;i<m;i++)
    30         for(j=0;j<=i;j++)
    31             fscanf(p,"%d",&data[i][j]);
    32     dqta(data,d);
    33     printf("最大值为:%d\n",d[0][0]);
    34     fpath(data,d,path);
    35     printf("最终路径为:\n");
    36         for(i=0;i<m;i++)
    37             printf("%d\n",path[i]);
    38 }
    39 int max(int x,int y)
    40 {
    41     if(x>y)return x;
    42     else return y;
    43 }
    44 void dqta(int **data,int **d)
    45 {
    46     int i,j;
    47         for(j=0;j<m;j++)
    48             d[m-1][j]=data[m-1][j];
    49     for(i=m-2;i>=0;i--)
    50         for(j=0;j<=i;j++)
    51             d[i][j]=max(d[i+1][j],d[i+1][j+1])+data[i][j];
    52 }
    53 void fpath(int **data,int **d,int *path)
    54 {
    55     int i,j,b;
    56     path[0]=data[0][0];
    57     j=0;
    58     for(i=1;i<m;i++)
    59     {
    60         b=d[i-1][j]-data[i-1][j];
    61         if(b==d[i][j])
    62         {
    63             path[i]=data[i][j];
    64         }
    65         else
    66         {
    67             path[i]=data[i][j+1];
    68             j++;
    69         }
    70     }
    71 }
  • 相关阅读:
    ES基本介绍
    Mybatis 读写分离简单实现
    分享一个Flink checkpoint失败的问题和解决办法
    一次“内存泄露”引发的血案
    记一次堆外内存泄漏排查过程
    MySQL主从复制读写分离,看这篇就够了!
    JVM运行时内存数据区域
    .NET MVC 页面传值方式
    jQuery 对表格内容进行搜索筛选
    泛型
  • 原文地址:https://www.cnblogs.com/lpshou/p/2453379.html
Copyright © 2011-2022 走看看