cpp#include<iostream> using namespace std; int n;// n个人传球游戏 默认开始球在编号为1的位置 int m;// 传递m次球 int main(){ cin>>n>>m; // 动态转方程: // 球传递到编号为k人的手中 // 种类总数 = 传递到k-1编号种类总数 + 传递到k+1编号种类总数 // 考虑界限:当传递次数为0次除了1为一种其他的为0 /* 0 1 2 3 |----------------| 0 | 0 | 1 | 0 | 0 | ------------------ 1 | 0 | 0 | 1 | 1 | ------------------ 2 | 0 | 2 | 1 | 1 | ------------------ 3 | 0 | 2 | 3 | 3 | */ int DP[31][31] = {}; DP[0][1] = 1; // 传球次数 for(int C=1;C<=m;C++){ for(int N=1;N<=n;N++){// 学生的编号 // 因为构成一个圈当编号为1的时候 == 编号为n以及2的和 if(N==1){ DP[C][1] = DP[C-1][n] + DP[C-1][2]; }else if(N==n){// 编号为n也是个扣环特殊点 DP[C][n] = DP[C-1][n-1] + DP[C-1][1]; }else{ DP[C][N] = DP[C-1][N-1] + DP[C-1][N+1]; } } } cout<<DP[m][1]; return 0; }
洛谷P1057 [NOIP2008 普及组] 传球游戏
Gjanuary2024-04-26 9:10
相关推荐
秋夫人10 分钟前
B+树(B+TREE)索引梦想科研社1 小时前
【无人机设计与控制】四旋翼无人机俯仰姿态保持模糊PID控制(带说明报告)Milo_K1 小时前
今日 leetCode 15.三数之和Darling_001 小时前
LeetCode_sql_day28(1767.寻找没有被执行的任务对)AlexMercer10121 小时前
【C++】二、数据类型 (同C)Greyplayground1 小时前
【算法基础实验】图论-BellmanFord最短路径蓑 羽1 小时前
力扣438 找到字符串中所有字母异位词 Java版本源代码:趴菜1 小时前
LeetCode63:不同路径II儿创社ErChaungClub1 小时前
解锁编程新境界:GitHub Copilot 让效率翻倍前端西瓜哥1 小时前
贝塞尔曲线算法:求贝塞尔曲线和直线的交点