#include <stdio.h>
int main()
{
int abc, def, ghi;
for (abc = 123; abc <= 329; abc++) {// 1000/3约为333,在333之前abc不重复的最大三位数为329
int Flag = 1; //用来判断此情况数字是否重复
int flag[10] = { 0 }; //初始值赋值为0,也可定义为bool类型
flag[abc / 100] = flag[abc / 10 % 10] = flag[abc % 10] = 1;//标记abc或def或ghi的每位数字已使用,赋值1
def = abc * 2;
flag[def / 100] = flag[def / 10 % 10] = flag[def % 10] = 1;
ghi = abc * 3;
flag[ghi / 100] = flag[ghi / 10 % 10] = flag[ghi % 10] = 1;
for (int i = 1; i <= 9; i++) { //判断是否有未使用过的数字
if (!flag[i]) {
Flag = 0;
break;
}
}
if (Flag) { //若有未使用的数字,则Flag已被赋值为0,即假,则不会输出
printf("%d %d %d\n", abc, def, ghi);
}
}
return 0;
}
算法竞赛二 2-6排列
最新推荐文章于 2024-10-08 23:13:16 发布