B2003复杂填数(数字不可重复)的深搜算法

#include <bits/stdc++.h>
using namespace std;
int arr[9 + 1], cnt;
bool flag[9 + 1];
void dfs(int step) {
    if (step > 9) {
        if (arr[1] * 100 + arr[2] * 10 + arr[3] + arr[4] * 100 + arr[5] 
        * 10 + arr[6] == arr[7] * 100 + arr[8] * 10 + arr[9]) {
            cnt++;
        }
    } else {
        for (int i = 1; i <= 9; i++) {
            if (flag[i] == false) {
                arr[step] = i;
                flag[i] = true;
                dfs(step + 1);
                flag[i] = false;
            }
        }
    }
}
int main() {
    dfs(1);
    cout << cnt << endl;
    return 0;
}