洛谷P1057传球游戏-题解
题目:
思路:
一看,计数的
先考虑一下DP
计数的转移,难度高的一般要经过思考才能得出来
但是难度低的(诸如此道)一般已经在题目中说出来了
重点就在于:
每个同学可以把球传给自己左右的两个同学中的一个(左右任意)
这句话上。
左和右,换成数学表示就是
i-1,i+1
由于题目说是一个环,所以特判一下头尾即可
同时,由于不可能同时传球,所以转移自然是来自于上一维(即上一次)的
转移方程应运而生:
f[i][j]=f[i-1][j-1]+f[i-1][j+1];
特判头尾,
同时由于题目说从1号开始,所以f[1][1]=1
代码:
#include <bits/stdc++.h> using namespace std; int n,m; int DP[35][35]; int main() { scanf("%d %d",&n,&m); DP[1][1]=1; for(int i=2;i<=m;i++) for(int j=1;j<=n;j++) { if(j==1) { DP[i][j]=DP[i-1][n]+DP[i-1][2]; }else if(j==n) { DP[i][j]=DP[i-1][n-1]+DP[i-1][1]; }else DP[i][j]=DP[i-1][j-1]+DP[i-1][j+1]; } printf("%d\n",DP[m][1]); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架