解题思路:
因为:a, b, c三数成比例,且1-9均只能使用一次。所以可以采用遍历的方式,从123遍历到329.
遍历之后,验证是否1-9均只使用了一次,是则输出,否则进入下一次循环。
这里采用hash表的方式,1-9数字作为key。
注意事项:
检验hash表时,特别注意0的检验,不能使用0;
参考代码:
//1518: 寻找三位数 #include <stdio.h> int main() { int a, b, c, i , j, t = 1; // 1-9, 9位数中最大的三位数是 987, 所以最大的a是329; for( i = 123 ; i < 330 ; i++ ) { // 对标记进行初始化 t = 1; int hash[10] = {0}; // 对a, b, c进行赋值 a = i; b = 2 * a; c = 3 * a; // 将a, b, c的三位数装入hash表中 j = a % 10; hash[j] ++; j = a / 10 % 10; hash[j] ++; j = a / 100; hash[j] ++; j = b % 10; hash[j] ++; j = b / 10 % 10; hash[j] ++; j = b / 100; hash[j] ++; j = c % 10; hash[j] ++; j = c / 10 % 10; hash[j] ++; j = c / 100; hash[j] ++; // 检验hash表中的0值是否被使用,是则进行下一次循环 if( hash[0] != 0 ) continue; // 检验hash表,如果hash表中的值都为1,则表示每个数字均只用过一次。 // 即,hash表中若有一值 != 1,就 break. for( j = 1; j < 10; j++) { if( hash[j] != 1 ) { t = 0; break; } } if( t == 1 ) printf("%d %d %d\n", a, b, c); } return 0; }
0.0分
0 人评分
C语言考试练习题_保留字母 (C语言代码)浏览:733 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:597 |
母牛的故事 (C语言代码)浏览:478 |
最小公倍数 (C语言代码)浏览:894 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1267 |
C语言程序设计教程(第三版)课后习题6.6 (C语言代码)浏览:366 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:594 |
局部变量作函数返回值的问题浏览:1028 |
演讲大赛评分 (C语言代码)浏览:1696 |
C二级辅导-等差数列 (C语言代码)浏览:806 |