编程语言
首页 > 编程语言> > 算法提高 最大值路径

算法提高 最大值路径

作者:互联网

#include<iostream>
using namespace std;
int n,max_len=0;
int graph[10][10];
int graph1[10][10];
int max(int a,int b)
{
	return a>b?a:b;
}
int getmax()
{
	int i,j;
	//动态规划得到最大值
	graph1[n-1][0] = graph[n-1][0];
	for(i=n-2;i>=0;i--)
	{
		graph1[i][0]=graph1[i+1][0] + graph[i][0];
	}
	for(i=1;i<n;i++)
	{
		graph1[n-1][i]=graph1[n-1][i-1] + graph[n-1][i];
	}
	for(i=n-2;i>=0;i--)
	{
		for(j=1;j<n;j++)
			graph1[i][j]=max(graph1[i+1][j],graph1[i][j-1])+graph[i][j];
	}
	return graph1[0][n-1];
}
void DFS(int x,int y,int len ,int num)
{
	if(x== n-1 && y==0 && num == graph[n-1][0])
	{
		max_len++;
		return ;
	}
	if(x+1<n)
		DFS(x+1,y,len+1,num-graph[x][y]);
	if(y-1>=0)
		DFS(x,y-1,len+1,num-graph[x][y]);
}
int main()
{
	int i,j;
	cin>>n;
	//输入
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
			cin>>graph[i][j];
	}
	//得到最大值
	int max1 = getmax();
	DFS(0,n-1,1,graph1[0][n-1]);
	cout<<max_len<<" "<<max1<<endl;
}

 

weixin_42303355 发布了4 篇原创文章 · 获赞 0 · 访问量 32 私信 关注

标签:10,int,graph,最大值,路径,算法,graph1,getmax
来源: https://blog.csdn.net/weixin_42303355/article/details/104614225