Liam


私信TA

用户名:Merit

访问量:16033

签 名:

不弥于空想,不骜于虚声

等  级
排  名 166
经  验 6808
参赛次数 17
文章发表 34
年  龄 22
在职情况 在职
学  校 南理工泰科院
专  业 计算机科学与技术

  自我简介:

热爱生活!

解题思路:动态规划,贪心不能得到最大解

注意事项:三维数组提高解题效率

参考代码:

#include<bits/stdc++.h>
#define N 50 
using namespace std;
int a[N][N][3]; //a[N][N][0]记录求解路径,a[N][N][1]存储的数据,a[N][N][2]部分解的结果
int n;
void operate()
{
	for(int i=n-1;i>=1;i--)
	{
		for(int j=1;j<=i;j++)
		{
			if(a[i+1][j][2]>a[i+1][j+1][2])
			{
				a[i][j][2]=a[i][j][2]+a[i+1][j][2];
			}
			else
			{
				a[i][j][2]=a[i][j][2]+a[i+1][j+1][2];
				a[i][j][0]=1;
			}
		}
	}
} 
int main()
{
	int m;
	cin>>m;
	while(m--)
	{
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=i;j++)
			{
				cin>>a[i][j][1];
				a[i][j][2]=a[i][j][1];
				a[i][j][0]=0;
			}
		}
		operate();
		cout<<a[1][1][2]<<endl;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=i;j++)
			{
				a[i][j][0]=0;
				a[i][j][1]=0;
				a[i][j][2]=0;
			}
		}
	}
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区