递归搜索树

#include <iostream>

using namespace std;

const int N = 10;

int n;

void dfs(int u, int nums[], bool st[]) {
    if (u > n) {
        for (int i = 1; i <= n; i ++ ) cout << nums[i] << ' ';
        cout << endl;
    }
    else {
        for (int i = 1; i <= n; i ++ ) {
            if (!st[i]) {
                st[i] = true;
                nums[u] = i;
                dfs(u + 1, nums, st);
                st[i] = false; // 恢复现场
            }
        }
    } 
}

int main() {
    cin >> n;
    
    int nums[N];
    bool st[N] = {0};
    
    dfs(1, nums, st);
    
    return 0;
    
}

解释恢复现场

posted @ 2021-03-06 00:12  MerielVaren  阅读(50)  评论(0)    收藏  举报