博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.比赛F - Problem_F
阅读量:5136 次
发布时间:2019-06-13

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

题目链接:http://acm.hust.edu.cn/vjudge/contest/126362#problem/F

比赛的时候没有图,也没有看群消息,看到这题自己臆想出了一种走法。。。说明看题真的很重要,不要先入为主,主观臆测!!!!这题是一个数字三角形的问题,麻烦一点的是倒过来求,但弄清楚怎么走也很简单了。。感觉这个有点类似dijkstra 算法。。

#include
#include
#include
#include
#include
#include
using namespace std;#define N 250int d[N][N],a[N][N];int main(){ int t,n,m; int c=1; scanf("%d",&t); while(t--) { memset(d,0,sizeof(d)); memset(a,0,sizeof(a)); scanf("%d",&n); m=2*n-1; for(int i=1;i<=m;i++)//输入 { if(i<=n) { for(int j=1;j<=i;j++) scanf("%d",&d[i][j]); } else { for(int j=1;j<=(2*n-i);j++)//多写几个数 就找出规律了 scanf("%d",&d[i][j]); } } a[1][1]=d[1][1];//从d[1][1] 开始 for(int i=2;i<=n;i++) for(int j=1;j<=i;j++) { if(j==1) a[i][j]=d[i][j]+a[i-1][j]; else if(j==i) a[i][j]=d[i][j]+a[i-1][j-1]; else a[i][j]=d[i][j]+max(a[i-1][j-1],a[i-1][j]); } for(int i=n+1;i<=m;i++) for(int j=1;j<=2*n-i;j++) a[i][j]=d[i][j]+max(a[i-1][j],a[i-1][j+1]); printf("Case %d: ",c); printf("%d\n",a[m][1]); c++; } return 0;}

 

转载于:https://www.cnblogs.com/Twsc/p/5744427.html

你可能感兴趣的文章
解决ajax请求cors跨域问题
查看>>
Android Studio
查看>>
zz 圣诞丨太阁所有的免费算法视频资料整理
查看>>
【大数模板】C++大数类 大数模板
查看>>
【123】
查看>>
《收获,不止Oracle》pdf
查看>>
用户权限设置
查看>>
java 之equals与"=="的区别
查看>>
LinkedList<E>源码分析
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Intellij IDEA(eclipse设置)常用快捷键
查看>>
NAT基本原理
查看>>
Java Content Repository API 简介 转自(https://www.ibm.com/developerworks/cn/java/j-jcr/)
查看>>
visio二次开发——图纸解析
查看>>
Activity之间的跳转:
查看>>
iTunes Connect 开发者上手经验(转)
查看>>
vertical-align你为什么不生效
查看>>
C++ 实践总结
查看>>
composer 国内镜像配置
查看>>