博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1258:【例9.2】数字金字塔_方法二:记忆化搜索
阅读量:7081 次
发布时间:2019-06-28

本文共 920 字,大约阅读时间需要 3 分钟。

/

1258:【例9.2】数字金字塔_方法二:记忆化搜索
/
#include <iostream>
#include <algorithm>
using namespace std;

const int MAXN = 505;

int A[MAXN][MAXN],F[MAXN][MAXN],N;

int Dfs(int x,int y)

{
if (F[x][y]==-1)
{
if (x==N)
{
F[x][y]=A[x][y];
cout<<"x0="<<x<<" y="<<y<<" "<<F[x][y]<<endl;
}
else
{
F[x][y]=A[x][y]+max(Dfs(x+1,y),Dfs(x+1,y+1));
cout<<"x1="<<x<<" y="<<y<<" "<<F[x][y]<<endl;
}
cout<<"------------------------------"<<endl;

}return F[x][y];

}

int main()

{
freopen("a.in","r",stdin);
freopen("b.out","w",stdout);

cin >> N;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 ++)      for(int j = 1;j <= i;j ++)                  F[i][j] = -1;   Dfs(1,1);cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"<
<< F[1][1] << endl;fclose(stdin);fclose(stdout);return 0;

}

/
由于F[x][y]对于每个合法的(x,y)都只计算过一次,
而且计算是在O(1)内完成的,因此时间复杂度为O(N^2)。
可以通过本题。
/

转载于:https://blog.51cto.com/1443208/2394221

你可能感兴趣的文章
eclipse项目推送git
查看>>
JavaScript基础之四——选择与循环结构
查看>>
js的event事件对象汇总
查看>>
[AH2017/HNOI2017]礼物
查看>>
大型网站架构演变和知识体系
查看>>
Scut游戏服务器引擎6.0.5.2发布
查看>>
帆布小球碰壁效果
查看>>
Less函数说明
查看>>
js window resize延时
查看>>
jQuery 1
查看>>
5.JSON
查看>>
小程序-TabBar点击切换
查看>>
二项堆-原理及伪代码
查看>>
C#生成二维码
查看>>
hdu 1045 Fire Net
查看>>
学习c++的50条忠告(转自C++百度贴吧)
查看>>
js获取屏幕大小
查看>>
console.log是异步的吗?
查看>>
test
查看>>
windows同时安装python3和python2
查看>>