[NOIP通ゲーム]

[NOIP通ゲーム]

タイトル

タイトル説明

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

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

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

入力形式

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

出力フォーマット

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

サンプル入力と出力

入力#1のコピー
33
の出力#1コピー
2
説明/ヒント
40%のデータを満足する:3≤n≤30,1≤m≤20

100%のデータを満たす:3≤n≤30,1≤m≤30

2008ユニバーサルグループIIIのタイトル

分析

我々は(同じである、実際には...)、1の開始時にその学生を想定し、F [0] [1](0、0.1の手に今ある球数回、合格します)

ケース1:1今手には、ある二つの1に対応> 3-> 1又は2-通過(J == 1)コード、F [i]は[J] = F [I-1] [n個] + F [-I 1] [2];
(1-I:2、最後、または最後の3で表されます)

ケース2:3が手に今ある、2つのケースがある(3は、nの一例であるので、最後のことをいう)(J == N)に対応し、1-> 3または> 3 2-を渡します

他の場合: - >中間体または+1中間---->中間中間で、二つの中間パスは-1あります

	if(j==1){
				f[i][j] = f[i-1][n]+f[i-1][2]; 
			}else if(j==n){
				f[i][j] = f[i-1][1] + f[i-1][n-1];
			}else{
				f[i][j] = f[i-1][j-1] + f[i-1][j+1];

:F [0] [1] = 1。学生の手にボールが始まって以来、これがケースです。
非常に明確。

コード

#include<iostream>

using namespace std;

int n,m;
int f[35][35];

int main(){
	cin>>n>>m;
	
	f[0][1] = 1;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			if(j==1){
				f[i][j] = f[i-1][n]+f[i-1][2]; 
			}else if(j==n){
				f[i][j] = f[i-1][1] + f[i-1][n-1];
			}else{
				f[i][j] = f[i-1][j-1] + f[i-1][j+1];
			}
		}
	}
	cout<<f[m][1]<<endl;
	return 0;
}
公開された75元の記事 ウォンの賞賛1 ビュー3652

おすすめ

転載: blog.csdn.net/A793488316/article/details/104585806