很简单的一个题目,没一次AC,因为忘记判断0了,有可能出现十位或个位上有零的情况,代码:
#include <stdio.h>
#include <string.h>
int sum;
int used[10];
int ck[10];
int check(int n)
{
int t;
while(n){
t = n % 10;
if(ck[t] || (t == 0)){
//要考虑不能为0的情况
return 0;
}
ck[t] = 1;
n /= 10;
}
return 1;
}
void srch(int now)
{
int i;
if(now == 3){
memset(ck, 0, sizeof(ck));
if(check(sum) && check(2 sum) && check(3 sum)){
printf("%d %d %d\n", sum, 2 sum, 3 sum);
}
return;
}
sum = ((sum << 3) + (sum << 1));
//sum *= 10;
for(i = 1; i <= 9; i++){
sum += i;
srch(now + 1);
sum -= i;
}
sum /= 10;
}
int main(void)
{
srch(0);
}