想看題目請點我
例如: t=3 k=-3
k
/ | \
1 2 3
/ \ /
1 2 1
/
1
#include <iostream>
using namespace std;
int answer ;
int recursive(int nowT,int k,int t);
int main() {
int t,k ; // t 遊戲難度 , k 地下k樓 (0>k>-20)
while(cin >> t >> k )
{
answer = 0 ; // Init
recursive(t,(-k),t);
cout << answer << endl ;
}
}
int recursive(int nowT,int k,int t) {
if((k - nowT ) < 0)
{
recursive((nowT-1),(k),t);
}
else if( k == 0)
{
answer++ ;
if(nowT > 1)
recursive((nowT-1),(k),t);
else
return EXIT_SUCCESS ;
}
else
{
for(int i = t ; i > 0 ; i--)
{
if((k-i) >=0 )
recursive(i,(k-i),t);
}
}
}
這題解小弟的解法大致上用樹的觀念例如: t=3 k=-3
k
/ | \
1 2 3
/ \ /
1 2 1
/
1