自己的方法:
将所遍历的数字的每个位放在b[ ]数组中,所对应的位置+1,若数组中所对应的4个位置有三个1,即为所求数字。
#include <stdio.h>
int main() {
int a,b[11]={0},rem,t,flag,sum,k=0;
scanf("%d",&a);
for(int i=100;i<1000;i++){
sum=0;
flag=1;
for(int j=0;j<10;j++){
b[j]=0;
}
t=i;
while(t){
rem=t%10;
b[rem]++;
t/=10;
}
for(int j=a;j<a+4;j++){
sum+=b[j];
if(b[j]>1){
flag=0;
break;
}
}
if(flag&&sum==3){
printf("%d",i);
k++;
if(k%6==0)
printf("\n");
else
printf(" ");
}
}
return 0;
}
别人的方法:
把3个数位单独思考,即为3个数字不相同
int main()
{
int a,x,y,z;
scanf("%d", &a);
int count = 0;
for (x=a;x<a+4;x++){
for (y=a;y<a+4;y++){
for (z=a;z<a+4;z++){
if (x!=y && x!=z && y!=z) {
printf("%d%d%d", x, y, z);
count++;
if ( count%6==0 ) {
printf("\n");
} else {
printf(" ");
}
}
}
}
}
return 0;
}