数字三角形
数字三角形
分析:就是三角形从下往上推,将当前的数加上他上面的数和当前的数加上他右上面的数进行比较(输入的时候是左对齐的),如果前者大,当前的数上面的数就成了现在当前的数(而且当前的数的上面的数的数值是当前的数加上当前的数上面的数)(虽然很绕吧但是看图就挺简单的了...),反之。最后就是输出最上面的数也就是a[1][1]
代码:
//数字三角形 倒推 #include<iostream> #include<cstdio> using namespace std; int a[1001][1001],f[100][100]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) cin>>a[i][j]; for(int i=n;i>=1;i--) for(int j=1;j<=i;j++) { if((a[i][j]+a[i-1][j])>(a[i][j+1]+a[i-1][j])) //当前的数加上上面的数和当前的数加上右上面的数比较 a[i-1][j]=a[i][j]+a[i-1][j]; //左上面的数就成了当前的数 else a[i-1][j]=a[i][j+1]+a[i-1][j]; //否则上面的数就成了当前的数 } cout<<a[1][1]; return 0; }
他们说我没看视频,写的这个复杂qaq..

浙公网安备 33010602011771号