为什么 $O(2^n)$ 会T?
查看原帖
为什么 $O(2^n)$ 会T?
481621
Zhang_Wenjie楼主2022/12/3 21:00

我按照《算进》的方法一做的搜索,为什么到 n=15n=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;
}
2022/12/3 21:00
加载中...