[LightOJ1004]Monkey Banana Problem(dp)
题目链接:http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1004
题意:数塔的变形,上面一个下面一个,看清楚了直接做就行了。
上半部分转移方程dp(i,j)=max(dp(i-1,j),dp(i-1,j+1))+G(i,j)
下半部分转移方程dp(i,j)=max(dp(i-1,j-1),dp(i-1,j))+G(i,j)
1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <climits> 6 #include <complex> 7 #include <fstream> 8 #include <cassert> 9 #include <cstdio> 10 #include <bitset> 11 #include <vector> 12 #include <deque> 13 #include <queue> 14 #include <stack> 15 #include <ctime> 16 #include <set> 17 #include <map> 18 #include <cmath> 19 20 using namespace std; 21 22 const int maxn = 1111; 23 int n, m; 24 int dp[maxn][maxn]; 25 int G[maxn][maxn]; 26 27 int main() { 28 // freopen("in", "r", stdin); 29 int T; 30 scanf("%d", &T); 31 for(int _ = 1; _ <= T; _++) { 32 scanf("%d", &n); 33 int cnt = 0; 34 bool flag = 0; 35 for(int i = 1; i <= 2 * n - 1; i++) { 36 if(!flag) cnt++; 37 for(int j = 1; j <= cnt; j++) { 38 scanf("%d", &G[i][j]); 39 } 40 if(cnt > n - 1) flag = 1; 41 if(flag) cnt--; 42 } 43 cnt = 0; 44 flag = 0; 45 memset(dp, 0, sizeof(dp)); 46 for(int i = 1; i <= 2 * n - 1; i++) { 47 if(!flag) cnt++; 48 for(int j = 1; j <= cnt; j++) { 49 if(i == 1 && j == 1) { 50 dp[1][1] = G[1][1]; 51 continue; 52 } 53 if(!flag) dp[i][j] = G[i][j] + max(dp[i-1][j-1], dp[i-1][j]); 54 else dp[i][j] = G[i][j] + max(dp[i-1][j+1], dp[i-1][j]); 55 } 56 if(cnt > n - 1) flag = 1; 57 if(flag) cnt--; 58 } 59 printf("Case %d: %d\n", _, dp[2*n-1][1]); 60 } 61 return 0; 62 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版