dfs全排列问题模板
https://www.acwing.com/problem/content/description/1211/
全排列问题+如何利用全排列插入符号来计算
#include
using namespace std;
const int N=10;
int dist[N];
int mark[N];
int target,cnt;
int cal(int l,int r){
int res=0;
for(int i=l;i<=r;i++){
res=res*10+dist[i];
}
return res;
}
void dfs(int u){
//插入+,/
if(u==9){
for(int i=0;i<7;i++){
for(int j=i+1;j<8;j++){
int a=cal(0,i);
int b=cal(i+1,j);
int c=cal(j+1,8);
if(a*c+b==target*c){
cnt++;
}
}
}
return ;
}
//生成全排列
for(int i=1;i<=9;i++){
if(!mark[i]){
dist[u]=i;
mark[i]=true;
dfs(u+1);
mark[i]=false;
}
}
}
int main(){
cin>>target;
dfs(0);
cout<