C语言这个简单动态规划数字三角形求纠错
#include<stdio.h>#include<stdlib.h>#include<string.h>intDP(int**p,intm);intmain(){int...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int DP(int**p,int m);
int main()
{
int m;
int i,j;
int **p;
scanf("%d",&m);
p=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
p[i]=(int*)malloc((i+1)*sizeof(int));
for(i=0;i<m;i++)
for(j=0;j<i+1;j++)
{
scanf("%d",&p[i][j]);
}
DP(p,m);
for(i=0;i<m;i++)
{
free(p[i]);
p[i]=0;
}
free(p);
p=0;
}
int DP(int**p,int m)
{
int i,j;
int **q;
memcpy(q,p,sizeof(p));
for(i=0;i<m;i++)
{
memcpy(q[i],p[i],sizeof(p[i]));
}
for(i=0;i<m;i++)
{
for(j=0;j<i;j++)
{
if(q[i+1][j]>q[i+1][j+1])p[i][j]+=p[i+1][j];
else p[i][j]+=p[i+1][j+1];
}
}
printf("%d",p[i-1][j-1]);
}
输入一个数字塔再输出应该没错吧 展开
#include<stdlib.h>
#include<string.h>
int DP(int**p,int m);
int main()
{
int m;
int i,j;
int **p;
scanf("%d",&m);
p=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++)
p[i]=(int*)malloc((i+1)*sizeof(int));
for(i=0;i<m;i++)
for(j=0;j<i+1;j++)
{
scanf("%d",&p[i][j]);
}
DP(p,m);
for(i=0;i<m;i++)
{
free(p[i]);
p[i]=0;
}
free(p);
p=0;
}
int DP(int**p,int m)
{
int i,j;
int **q;
memcpy(q,p,sizeof(p));
for(i=0;i<m;i++)
{
memcpy(q[i],p[i],sizeof(p[i]));
}
for(i=0;i<m;i++)
{
for(j=0;j<i;j++)
{
if(q[i+1][j]>q[i+1][j+1])p[i][j]+=p[i+1][j];
else p[i][j]+=p[i+1][j+1];
}
}
printf("%d",p[i-1][j-1]);
}
输入一个数字塔再输出应该没错吧 展开
1个回答
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询