//DFS
#include<stdio.h>
int book[6], a[6], total = 0;
void dfs(int step)
{
int left, right;
left = a[1] * 10000 + a[2] * 1000 + a[3] * 100 + a[4] * 10 + a[5];
right = a[5] * 10000 + a[4] * 1000 + a[3] * 100 + a[2] * 10 + a[1];
if (step == 6)
{
if (right%left==0)
{
total++;
printf("%d", left);
}
return;
}
for (int j = 1; j <= 9; j++)//注意判断条件是9而不是5,1~9都可以取到
{
if (book[j] == 0)
{
a[step] = j;
book[j] = 1;
dfs(step + 1);//递归
book[j] = 0;
}
}
return ;
}
int main()
{
dfs(1);
printf("共有%d种情况", total );
return 0;
}
//暴力枚举
#include <stdio.h>
int main()
{
for(int i=12345; i<=98765; i++)
{
int a = i / 10000;
int b = i % 10000 / 1000;
int c = i % 10000 % 1000 / 100;
int d = i % 10000 % 1000 % 100 / 10;
int e = i % 10;
if(a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e)
{
continue;
}
int j = e*10000 + d*1000 + c*100 + b*10 + a;
if(j % i == 0)
{
printf("%d\n",i);
}
}
return 0;
}
蓝桥杯-DFS&枚举-古堡算式
于 2022-02-06 00:56:28 首次发布