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
相关推荐
chenziang11 分钟前
leetcode hot100 环形链表2Captain823Jack1 小时前
nlp新词发现——浅析 TF·IDFCaptain823Jack2 小时前
w04_nlp大模型训练·中文分词是小胡嘛3 小时前
数据结构之旅:红黑树如何驱动 Set 和 Mapm0_748255023 小时前
前端常用算法集合呆呆的猫3 小时前
【LeetCode】227、基本计算器 IITisfy3 小时前
LeetCode 1705.吃苹果的最大数目:贪心(优先队列) - 清晰题解余额不足121383 小时前
C语言基础十六:枚举、c语言中文件的读写操作火星机器人life6 小时前
基于ceres优化的3d激光雷达开源算法虽千万人 吾往矣6 小时前
golang LeetCode 热题 100(动态规划)-更新中