好好走路!
Q: N个元素依次进栈,则出栈有多少种方式?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include<iostream> using namespace std;
int sum(int x,int y) { if(x==0) return 1; if(y==0) return sum(x-1,y+1); else return sum(x-1,y+1)+sum(x,y-1); }
int main() { int N; cin>>N; cout<<sum(N,0); return 0; }
|
计数问题:答案为N+11CNn (N=2n)
| void Counter(int sout,int sin,int &sum) { if(sout==0) { sum++; return ; } else { Counter(sout-1,sin+1,sum); } if(sin>0) Counter(sout,sin-1,sum); }
|