zoukankan      html  css  js  c++  java
  • DP 传球问题

    洛谷P1057 传球问题

    分析:经过m次传球到第i个人的方法可以由经过m-1次传球到第i个人和到第i-1个人传递得来

    设dp[i][j]为经过j次传球后到达第i个人的方法数,可得到状态转移方程为:

    dp[i][j]=dp[i-1][j-1]+dp[i+1][j-1];

    写循环时注意状态转移是跟着人来的,每次传球每个人的方法数都会变,依次确定循环次序

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const double pi=acos(-1);
     5 int dp[35][35];
     6 int main(){
     7     int n,m;scanf("%d%d",&n,&m);
     8     dp[1][0]=1;
     9     for(int i=1;i<=m;i++){
    10         dp[1][i]=dp[2][i-1]+dp[n][i-1];
    11         dp[n][i]=dp[n-1][i-1]+dp[1][i-1];
    12         for(int j=2;j<n;j++){
    13             dp[j][i]=dp[j-1][i-1]+dp[j+1][i-1];
    14         }
    15     }
    16     cout<<dp[1][m]<<endl;
    17     return 0;
    18 }
  • 相关阅读:
    java 学习帮助
    权限
    ftp mybatis
    注解
    hadoop english
    userDao
    发布订阅模式 和委托
    webservice
    rabbitMq视频教程
    blog url.txt
  • 原文地址:https://www.cnblogs.com/qingjiuling/p/10142666.html
Copyright © 2011-2022 走看看