csu1022 基础dp(数字三角形)
2016-02-06 12:03
501 查看
这个数字三角形只是比那个入门的数字三角形多了一条路而已,简单的dp
状态 dp[i][j] : 第i行 第j列的最大和。
转移方程 dp[i][j]=max{ dp[i+1][j] , dp[i+1][j+1] , dp[i+1][j+2] } + a[i][j];
以下为代码:
状态 dp[i][j] : 第i行 第j列的最大和。
转移方程 dp[i][j]=max{ dp[i+1][j] , dp[i+1][j+1] , dp[i+1][j+2] } + a[i][j];
以下为代码:
#include <cstdio> #include <cmath> #include <cstring> #include <algorithm> using namespace std; int a[300][300],dp[300][300]; int maxx(int aa,int bb ,int cc) { int ret=max(aa,bb); return max(ret,cc); } int main() { // freopen("in.txt","r",stdin); int T; scanf("%d",&T); while(T--){ memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); int n; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=2*i-1;j++) scanf("%d",&a[i][j]); for(int i=1;i<=2*n-1;i++) dp [i]=a [i]; for(int i=n-1;i>0;i--) for(int j=1;j<=2*i-1;j++) dp[i][j]=maxx(dp[i+1][j],dp[i+1][j+1],dp[i+1][j+2])+a[i][j]; printf("%d\n",dp[1][1]); } return 0; }
相关文章推荐
- 如何将随机生成的安卓手机mac地址改为固定
- Python3.x和Python2.x的区别,以及python2代码转python3
- (Kafka)流数据平台实战指南
- tv_list
- 日经春秋 20160206
- iOS学习之flappyBird游戏的实现
- Html5的新特性学习
- 天声人語 20160206 「反うわさ戦略」という試み
- Java入门:输入输出
- Android Studio 导出APK
- 并行化卷积神经网络的系统与方法
- mysql监控、性能调优及三范式理解
- hdu1051 Wooden Sticks(DP入门)
- Android Studio 签名打包过程图解
- Redis 10 个快速提示
- 有关电能质量的总结
- 中国最新行政区划51个城市哈密顿回路19348千米:2个行政院、8个直辖市、3个特别行政区、7个自治区、31个省。
- android:使用mediaplayer播放res/raw文件夹中的音乐
- HDU 2149-Public Sale(巴什博奕)
- How to send gmail by Indy (TIdSMTP)?