现在的位置: 首页 > 综合 > 正文

HDOJ 数塔 2084

2018年02月20日 ⁄ 综合 ⁄ 共 751字 ⁄ 字号 评论关闭
#include <iostream>
#include <cmath>
using namespace std ;

int main()
{
	int t ;
	cin >> t ;
	while(t--)
	{
		int n ;
		cin >> n ;
		int  a[102][102]={0} , s[102][102] = {0};
		for ( int i = 1 ; i <= n ; ++i)
		  for ( int j = 1 ; j <=i ; ++j)
		  {
		  	       cin >> a[i][j];
		  }
		for ( int i = 1 ; i <= n ; ++i)
		          s[n][i]=a[n][i];
		for ( int i = n - 1 ; i >=1;--i)
		  for ( int j = i ; j >=1 ; --j)
		  {
		  	     s[i][j]=a[i][j]+max(s[i+1][j],s[i+1][j+1]);
		  }
		cout << s[1][1] << endl;
	}
	return 0 ;
}

第二个是从上到下写的  样例能通过 但是 测试结果是错的。。。谁发现哪里错了  麻烦告知下 thanks

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std ;

int main()
{
	int t ;
	cin >> t ;
	while(t--)
	{
		int n ;
		cin >> n ;
		int  a[102][102]={0} ;
		for ( int i = 1 ; i <= n ; ++i)
		  for ( int j = 1 ; j <=i ; ++j)
		  {
		  	       cin >> a[i][j];
		  }
	   for ( int i = 1 ; i<=n ; ++i)
	     {
	     	  a[i][0] = 0 ;
	     	  a[i][i+1] = 0 ;
	     }
	   for ( int i = 2 ; i <= n ; ++i)
	     for ( int j = 1 ; j <= i ; ++j)
	     {
	     	  a[i][j] += max(a[i-1][j],a[i-1][j-1]);
	     }
     cout << *max_element(&a[5][0],&a[5][5]) << endl ;
	}
	return 0 ;
}

抱歉!评论已关闭.