Algorithm spoj ACPC10D-为什么我得到了错误的答案?
这是我的代码。它正在通过问题陈述中给出的测试用例。 问题链接: tri[i][j]存储tri[0][1]在索引(i,j)处达到的最小值Algorithm spoj ACPC10D-为什么我得到了错误的答案?,algorithm,dynamic-programming,Algorithm,Dynamic Programming,这是我的代码。它正在通过问题陈述中给出的测试用例。 问题链接: tri[i][j]存储tri[0][1]在索引(i,j)处达到的最小值 //trigraphs-dp #include<iostream> #include<limits.h> using namespace std; int tri[1000000][3]; int min(int a,int b) { if(a<=b) return a; else return b; } int main()
//trigraphs-dp
#include<iostream>
#include<limits.h>
using namespace std;
int tri[1000000][3];
int min(int a,int b)
{
if(a<=b)
return a;
else
return b;
}
int main()
{
int n,t=1;
while(cin>>n)
{
if(n==0)
break;
for(int i=0;i<n;i++)
for(int j=0;j<3;j++)
cin>>tri[i][j];
tri[0][0]=INT_MAX;
tri[0][2]=tri[0][1]+tri[0][2];
//cout<<tri[0][2];
int a,b,c,d;
for(int i=1;i<n;i++)
for(int j=0;j<3;j++)
{
a=tri[i-1][j];
b=(j==2)?INT_MAX:tri[i-1][j+1];
c=(j==0)?INT_MAX:tri[i-1][j-1];
d=(j==0)?INT_MAX:tri[i][j-1];
tri[i][j]+=min(min(a,b),min(c,d));
}
cout<<t<<". "<<tri[n-1][1]<<"\n";
}
return 0;
}
//三角图dp
#包括
#包括
使用名称空间std;
int tri[1000000][3];
最小整数(整数a,整数b)
{
如果(a>n)
{
如果(n==0)
打破
对于(inti=0;itri[i][j];
tri[0][0]=整数最大值;
tri[0][2]=tri[0][1]+tri[0][2];
//cout1-您忘记在循环结束时增加t
2-将tri定义为long类型,因为当您累加数字时可能会溢出。1-您忘记在循环结束时增加t
2-将tri定义为long类型,因为在计算数字时可能会溢出。如何在每次更新值时进行一些测试输出。问题很小,可以通过查看所有更改来检测哪一步出错。请注释代码并使其格式反映出来它的结构。每次更新值时进行一些测试输出如何。问题很小,可以通过查看所有更改来检测在哪一步出错。请对代码进行注释,并使其格式反映其结构。