NOIP 2008パッシングゲーム

羅区P1057通ゲーム

羅区ポータル

JDOJ 1536:[NOIP2008]ゲームボールT3

JDOJポータル

説明

ジムのクラスの先生シャオマンは、多くの場合、一緒にゲームをプレイするために学生を取ったとき。この時、教師は生徒が一緒にゲームを渡してください。

n個の円の中に立っ同級生、ボールを保持している学生の手には、教師が真夜中にボールを起動するために笛を吹くとき、各学生が自分の2クラスメートの周りにボールを渡すことができている:ゲームのルールはこれですボールを保持している1(右または左)、再び笛を吹くために真夜中に教師、ストップを渡して、この時間は、生徒たちに広がっていなかったあなたの性能を与えるために、敗者です。

スマートシャオマンは興味深い質問提起:シャオ男の手からパスを作成する方法がボールを渡すようになったどのように多くの異なったが、後にm回を渡し、彼はシャオ男の手に戻りました。のみこれらの2つの方法と、組成物の順序に従ってボールキャッチを受ける生徒の配列が異なる場合、方法2種類の異なる方法として考えられている渡します。例えば、3人の学生1号、2号、3号と第1小マン、バック三つの方法にボールあるXiaoman手を想定しているがある1-> 2-> 3-> 1及び1-> 3- > 2-> 1、二種類の合計。

入力

入力コモンライン、整数nによって分離された2つのスペースがあり、M(3 <= N <= 30,1 <= M <= 30)。

出力

出力共通線は、質問の意味を持つ行の標識法の整数があります。

サンプル入力

3 3

サンプル出力

2

ヒント

データ満足の40%:3 <= N <= 30 1 <= M <= 20

100%のデータを満たす:3 <= N <= 30 1 <= M <= 30

ソース

NOIP2008人気グループ

ソリューション:

再帰。

私は問題を解決するには、唯一の四つの部分のリターンを移動すると思います:

1、ステータス設定\(DP [I] [J ] \) の経過を表し\(J \)をバック渡す(私は\)\のプログラム番号の数。

2、初期値:\(DP [1] [0] = 1 \。) なお、上述した状態と併せて理解することができます。

3.転送:(\ DP [I] [J] DP = [1-I] [J-1] + DP [I + 1] [-J 1])\の環状構造を処理するために、我々は、特別な処理を必要とします。\(I = 1 \)\(I = N \)場合。

4、答えは:\(DP [M] \ [1])

コード:

#include<cstdio>
using namespace std;
int n,m;
int dp[31][31];//dp[i][j]表示经过j次传球传回i号人的方案数
int main()
{
    scanf("%d%d",&n,&m);
    dp[1][0]=1;
    for(int i=1;i<=m;i++)
    {
        dp[1][i]=dp[n][i-1]+dp[2][i-1];
        for(int j=2;j<n;j++)
            dp[j][i]=dp[j-1][i-1]+dp[j+1][i-1];
        dp[n][i]=dp[n-1][i-1]+dp[1][i-1];
    }
    printf("%d",dp[1][m]);
    return 0;
}

おすすめ

転載: www.cnblogs.com/fusiwei/p/11387657.html