鹿我所录的博客

记录我在学习C#中的点点滴滴,记录下以备后来人借鉴。

 

洛谷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;
}
复制代码

 

posted on   鹿我所录  阅读(174)  评论(0编辑  收藏  举报

编辑推荐:
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

统计

点击右上角即可分享
微信分享提示