vijos P1485传球游戏(递推)
2016-05-01 12:26
246 查看
题目链接:https://vijos.org/p/1485
思路:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1] ,dp[i][j]表示经过i次到达j的次数。
详细代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e3+100;
int dp[maxn][maxn];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i,j,k;
memset(dp,0,sizeof dp);
dp[0][0]=1;
for(i=1;i<=m;i++)
{
dp[i][0]=dp[i-1][n-1]+dp[i-1][1];
dp[i][n-1]=dp[i-1][n-2]+dp[i-1][0];
for(j=1;j<n-1;j++)
{
dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];
}
}
cout<<dp[m][0]<<endl;
return 0;
}
思路:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1] ,dp[i][j]表示经过i次到达j的次数。
详细代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e3+100;
int dp[maxn][maxn];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i,j,k;
memset(dp,0,sizeof dp);
dp[0][0]=1;
for(i=1;i<=m;i++)
{
dp[i][0]=dp[i-1][n-1]+dp[i-1][1];
dp[i][n-1]=dp[i-1][n-2]+dp[i-1][0];
for(j=1;j<n-1;j++)
{
dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];
}
}
cout<<dp[m][0]<<endl;
return 0;
}
相关文章推荐
- Web组件跳转和JSP
- 袁腾飞——夏王朝
- 备忘:js正则表达式中的元字符
- 基于拦截器的权限管理
- 将XML整合为一行
- Oracle 12C 在线重命名和迁移数据文件
- XML名字空间
- Linux中的无线架构概述
- 309. Best Time to Buy and Sell Stock with Cooldown
- 文章标题
- Codeforces Round #336 (Div. 2)
- tomcat7与JSTL冲突
- MyBatis insert操作返回主键
- Shell编程—根据用户输入来输出符号正方形
- c#中delegate和事件
- 对BeforeSuite和BeforeTest的理解
- s3sh3环境配置
- 面向对象C++(从生物学理解继承 )
- hdoj 1080 Human Gene Functions 【LCS变形】
- 哈希表实现