算法竞赛入门-排列
题目描述:
用1-9组成三个三位数,
满足比例关系1:2:3,数字不可以重复,
输出所有解
解题思路:
构造哈希数组来判断数字的使用情况
#include<stdio.h>
#include<string.h>
int main()
{
int abc, ghi, def;
for( abc = 123; abc <= 333; abc++)
{
int a[10]={0}; #统计1-9是否出现
def = 2*abc;
ghi = 3*abc;
a[abc/100] = a[abc/10%10] = a[abc%10] = 1;
a[def/100] = a[def/10%10] = a[def%10] = 1;
a[ghi/100] = a[ghi/10%10] = a[ghi%10] = 1;
int judge = 1;
for (int i = 1; i <= 9; i++)
{
if ( !a[i]) //a[i] == 0 ,表示数字有重复。
{
judge = 0;
break;
}
}
if (judge)
printf("%d %d %d\n", abc, def, ghi);
}
return 0;
}