全排列生成1~9的数字然后判断是否满足条件
#include<stdio.h>
int ans = 0;
int num[10];
int visit[10];
void Solve()
{
double sum = num[0] + (double)num[1] / num[2] + (double)(num[3]*100+num[4]*10+num[5])/(num[6]*100+num[7]*10+num[8]);
if(sum == 10)
{
ans ++;
}
}
void dfs(int cur)
{
if(cur == 9){
Solve();
return;
}
for(int i=1;i<=9;i++){
if(!visit[i]){
visit[i] = 1;
num[cur] = i;
dfs(cur+1);
visit[i] = 0;
}
}
}
int main()
{
dfs(0);
printf("%d\n",ans);
return 0;
}