算法提高 最大值路径
作者:互联网
#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