1.递归(time limit exceeded)但是结果是对的,所以也记下来吧!
#include<iostream>
void calcu(int inNum, int outNum, long long &sum);
using namespace std;
int main()
{
int n;
while (cin >> n)
{
long long sum=0;
calcu(0, n, sum);
cout << sum << endl;
}
return 0;
}
void calcu(int inNum, int outNum, long long&sum)//inNum在栈中的个数,outNum还未入栈的个数,sum计数
{
if (outNum == 0)//全都入过栈了
{
sum += 1;
return;
}
else if (inNum == 0) calcu(1, outNum - 1, sum);//栈中无元素,只能入栈
else //栈中有元素
{
calcu(inNum - 1, outNum, sum);//出栈
calcu(inNum + 1, outNum - 1, sum);//或者入栈
}
}