下面显示的是一个数字三角形。我需要一个程序,以找到一条路径从顶部开始,在底部结束。路径中的数字应该加起来,我想找出最大的数字。有几条规则:
(diagonal);
下面的数字三角形就是一个例子,代码应该输出30。(路径应为7->3->8->7->5,和为30)
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
输入是一个整数,三角形的高度和三角形本身,输出应该是一个数字,最大的路径。上面显示的例子的输入应该是5,然后是三角形的其余部分。这似乎是一个简单而愚蠢的问题,但我对编程很陌生,在网上找不到任何答案。
#include <iostream>
using namespace std;
int main() {
int rows;
cin >> rows;
int triangle[rows][rows];
for (int i = 0; i < rows; ++i) {
for (int j = 0; j <= i; ++j) {
cin >> triangle[i][j];
}
}
for (int i = rows-2; i >= 0; i--) {
for (int j = 0; j < i + 1; j++) {
int down = triangle[i][j] + triangle[i+1][j];
int right = triangle[i][j] + triangle[i+1][j+1];
if (down > right) {
triangle[i][j] = down;
} else {
triangle[i][j] = right;
}
}
}
cout << triangle[0][0];
return 0;
}这是我当前寻找最大路径的代码,但由于某些原因,它无法工作。
发布于 2022-09-17 17:52:15
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char** argv) {
int temp, n, s;
cout<<"enter 0<10 number : ";
cin>>n;
int nums [n+1]={0};
s=n-1;
nums[s] = 1;
for( int i=0; i<n; i++){
cout<<"\n";
for( int j=0; j<s; j++ )
cout<<" ";
for( int j=0; j<=i; j++){
temp = nums[s+j] + nums[s+j+1];
cout<<temp<<setw(4);
nums[s+j] = temp;
}
s--;
}
return 0;
}https://stackoverflow.com/questions/73724938
复制相似问题