原贴:“
没错这是最简单的写法(C语言)
[u]暴力,加简化的判断[/u],数学原理,2个集合内所有数相加相乘结果一样,2个集合的内容一样
if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==1+2+3+4+5+6+7+8+9)&&((a/100)(a/10%10)(a%10)(b/100)(b/10%10)(b%10)(c/100)(c/10%10)(c%10)==(1)(2)(3)(4)(5)(6)(7)(8)(9)))
printf("%d %d %d\n",a,b,c);
”
数学原理,2个集合内所有数相加相乘结果一样,2个集合的内容一样————这叫什么数学原理?!
坦率讲,不推荐这类算法。确定一个只有正数集合的元素数量、元素之和、元素之积根本无法确定该集合的元素值。所以这道题只是恰好在三位数范围内没有多解而已。我随便举几个例子,如果允许重复:{3、3、8}等于{2,2,6}吗?{1,6,6,8}等于{2,3,4,12}吗?如果不允许重复{2,4,6,18}等于{1,8,9,12}吗?显然这种判断方式只是收敛在一定的限制范围内,但是具体的限制条件作为合格码农不应该去猜测。这个解决方法和直接打印四组结果对我来讲是一样的,高票误导伤人啊。