我按照《算进》的方法一做的搜索,为什么到 n=15 就T了?
#include<bits/stdc++.h>
using namespace std;
vector<int> s1;
stack<int> s2;
int n,s3=1,sum;
void dfs()
{
if(s1.size()==n)
{
sum++;
}
if(s2.size())
{
s1.push_back(s2.top());
s2.pop();
dfs();
s2.push(s1.back());
s1.pop_back();
}
if(s3<=n)
{
s2.push(s3);
s3++;
dfs();
s3--;
s2.pop();
}
}
int main()
{
cin>>n;
dfs();
cout<<sum;
return 0;
}