noip2008普及组t3传球游戏

简单dp

dp[i][j]表示第i个人在j次传球前的状态

注意i=1 i=n时特殊处理

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
int n,m,f[35][35];
int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(!isdigit(ch)) {
           
    if(ch==-) f=-1;ch=getchar();}
    while(isdigit(ch)) {x=x*10+ch-0;ch=getchar();}
    return x*f;
}
int main()
{
    scanf("%d%d",&n,&m);
    f[1][0]=1;
    for(int i=1;i<=m;i++)
    {
        f[1][i]=f[n][i-1]+f[2][i-1];
        f[n][i]=f[1][i-1]+f[n-1][i-1];
        for(int j=2;j<n;j++)
        {
            f[j][i]=f[j-1][i-1]+f[j+1][i-1];
        }
    }
    printf("%d",f[1][m]);
}
#include #include #include #include #include #include using namespace std; int n,m,f[35][35]; int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) { if(ch==-) f=-1;ch=getchar();} while(isdigit(ch)) {x=x*10+ch-0;ch=getchar();} return x*f; } int main() { scanf("%d%d",&n,&m); f[1][0]=1; for(int i=1;i<=m;i++) { f[1][i]=f[n][i-1]+f[2][i-1]; f[n][i]=f[1][i-1]+f[n-1][i-1]; for(int j=2;j
View Code #include #include #include #include #include #include using namespace std; int n,m,f[35][35]; int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) { if(ch==-) f=-1;ch=getchar();} while(isdigit(ch)) {x=x*10+ch-0;ch=getchar();} return x*f; } int main() { scanf("%d%d",&n,&m); f[1][0]=1; for(int i=1;i<=m;i++) { f[1][i]=f[n][i-1]+f[2][i-1]; f[n][i]=f[1][i-1]+f[n-1][i-1]; for(int j=2;j
简单dp dp[i][j]表示第i个人在j次传球前的状态 注意i=1 i=n时特殊处理 #include #include #include #include #include #include using namespace std; int n,m,f[35][35]; int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) { if(ch==-) f=-1;ch=getchar();} while(isdigit(ch)) {x=x*10+ch-0;ch=getchar();} return x*f; } int main() { scanf("%d%d",&n,&m); f[1][0]=1; for(int i=1;i<=m;i++) { f[1][i]=f[n][i-1]+f[2][i-1]; f[n][i]=f[1][i-1]+f[n-1][i-1]; for(int j=2;j
经验分享 程序员 微信小程序 职场和发展