刚开始想让它自由组合,然后在排序得到答案,最后没有弄出来。就暴力解出来了。
#include <stdio.h>
int main()
{
int count=0;
int num;
int min;
int max;
scanf("%d",&num);
max = (num+3)*100 + (num+2)*10 + num +1;
min = num*100 + (num+1)*10 + num + 2;
for(int i=min;i<=max;i++)
{
if((i%10 != num) && (i%10 != num+1) && (i%10 != num+2) && (i%10 != num+3)) continue;
if((i/10%10 != num) && (i/10%10 != num+1) && (i/10%10 != num+2) && (i/10%10 != num+3)) continue;
if((i/100%10 != num) && (i/100%10 != num+1) && (i/100%10 != num+2) && (i/100%10 != num+3)) continue;
if((i%10 == i/10%10) || (i%10 == i/100%10) || (i/10%10 == i/100%10)) continue;
count++;
printf("%d",i);
if(count%6 == 0) printf("\n");
else printf(" ");
}
return 0;
}