羅区P1057パッシングゲーム(動的計画法)

タイトル説明

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

ゲームのルールはこれです:nnは2人の生徒は教師が真夜中にボールを起動するために笛を吹く円、ボールを保持している生徒の一人で立って、各学生は、自分の中で二人の学生を中心にボールを渡すことができます(右または左)、深夜の教師が吹く笛もう一度、この時間をストップを渡し、あなたのパフォーマンスを提供するために、学生がボールを保持している行くことは敗者であるという報告は、ありませんでした。

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

入力形式

ライン、2つの整数によって分離スペースN、M(3≤n≤30,1≤m≤30)があります。

出力フォーマット

質問の意味を持つ行のメソッドの数を表す整数。

サンプル入力と出力

エントリー 

3 3

輸出 

2

アイデア:

ボールに記録されたD [i]は[J]でiはプログラムの数ができ小男に達した位置jを通過します。

個々のボールから到来jは、J + 1またはJ-1位、Jシャオマン== J + J-1プラスプログラムのプログラム番号の数にボールを通過する個々のプログラムの数、すなわち、D [iは] [J] = D [I-1] [J-1] + D [I-1 [j + 1]、

国境にそれを再処理した後。

コード:

#include <iostream>
using namespace std;
int main()
{
	int n,m;
	int d[33][33]={0};//d[i][j]还剩i次传球第j人时有多少方案传到小蛮 
	cin>>n>>m;
	d[1][2]=d[1][n]=1;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(j==1)
			d[i][j]+=d[i-1][n];
			else
			d[i][j]+=d[i-1][j-1];
			if(j==n)
			d[i][j]+=d[i-1][1];
			else
			d[i][j]+=d[i-1][j+1];
		}
	}
	cout<<d[m][1];
	return 0; 
}

 

公開された28元の記事 ウォンの賞賛0 ビュー507

おすすめ

転載: blog.csdn.net/xiaolan7777777/article/details/104486341