1. 程式人生 > >C++實現求解投骰子游戲問題

C++實現求解投骰子游戲問題

【問題描述】玩家根據骰子的點數決定走的步數,即骰子點數為1時可以走一步,點數為2時可以走兩步,點數為n時可以走n步。求玩家走到第n步(n≤骰子最大點數且投骰子的方法唯一)時總共有多少種投骰子的方法。
輸入描述:輸入包括一個整數n(1≤n≤6)。
輸出描述:輸出一個整數,表示投骰子的方法數。
輸入樣例:6
輸出樣例:32

#include<iostream>
using namespace std;

int func(int n,int m,int &k)         //n:當前步數  m:目的步數  k:方法數 
{
	if(n == m)                       //如果當前步數等於目的步數,方法數加一 
		return k++; 
	if(n > m)                        //當前步數大於目的步數時,方法數不變 
		return k;
	for(int i=1;i<=m;i++)
	{
		func(n+i,m,k);
	}
	return k;                        //返回方法數
} 

int main()
{
	int n,k=0;
	cin>>n;
	cout<<func(0,n,k);
}