// 数字三角.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
const int maxn = 105;
int dp[ maxn ][ maxn ], num[ maxn ][ maxn ], mid[ maxn ][ maxn ];
using namespace std;
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
int sum, n;
while( cin >> n ){
memset( num, 0, sizeof( num ) );
memset( dp, 0, sizeof( dp ) );
memset( mid, 0, sizeof( mid ) );
for( int i = 0; i < n; ++i ){
for( int j = 0; j <= i; ++j ){
cin >> num[ i ][ j ];
dp[ i ][ j ] = num[ i ][ j ];
}
}
for( int i = n - 1; i >= 0; --i ){
for( int j = 0; j < i; ++j ){
if( dp[ i ][ j ] > dp[ i ][ j + 1 ] ){
mid[ i - 1 ][ j ] = j;
dp[ i - 1 ][ j ] += dp[ i ][ j ];
}
else{
mid[ i - 1 ] [ j ] = j + 1 ;
dp[ i - 1 ][ j ] += dp[ i ][ j + 1 ];
}
}
}
cout << dp[ 0 ][ 0 ] << endl;
int i, j = 0;
for( i = 0; i < n - 1; ++i ){
cout << num[ i ][ j ] << " ";
j = mid[ i ][ j ];
}
cout << num[ i ][ j ] << endl;
}
return 0;
}
数字三角
最新推荐文章于 2017-01-22 16:47:01 发布