概述
动态规则:数塔问题
有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。
#include<stdio.h>
#include<math.h>
#define
N 5
int
data[N][N],db[N][N];
void
DBdata(){
int i,j;
int temp;
for(j=0;j<N;j++){
db[N-1][j]=data[N-1][j];
}
for(i=N-2;i>=0;i--){
for(j=0;j<=i;j++){
temp=db[i+1][j]>db[i+1][j+1]?db[i+1][j]:db[i+1][j+1];
db[i][j]=temp+data[i][j];
}
}
}
void
data_print(){
int i,j;
for(i=0;i<N;i++){
for(j=0;j<=i;j++){
printf("%d ",db[i][j]);
}
printf("n");
}
}
int
main(){
int x;
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++){
scanf("%d",&data[i][j]);
}
DBdata();
data_print();
return 0;
}
最后
以上就是天真枫叶为你收集整理的动态规则:数塔问题的全部内容,希望文章能够帮你解决动态规则:数塔问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复