当前位置: 代码迷 >> 其他开发语言 >> 算法解决方案
  详细解决方案

算法解决方案

热度:279   发布时间:2016-05-02 04:03:39.0
算法
使用1-9这9个数字,分为3组,每组是一个三位数,确保其中两组的和等于另一组。要求:这三组数每位都不能重复,并且这三组数一共九个数字全部用到1-9,例如:
124+ 659 = 783
用一种你熟悉的语言实现



------解决方案--------------------
python
from itertools import permutations
all_num = range(1,10)
result = []
for comb in permutations(all_num):
    nums = [reduce(lambda x,y: x*10+y,comb[i:i+3],0) for i in range(0,len(comb),3)]
    if nums[0]+nums[1]==nums[2]:
        result.append(str(nums[0])+'+'+str(nums[1])+'='+str(nums[2]))
print '\n'.join(result)
print 'total:',len(result)

结果:
>>> ================================ RESTART ================================
>>> 
124+659=783
125+739=864
127+359=486
127+368=495
128+367=495
128+439=567
129+357=486
129+438=567
129+654=783
129+735=864
134+658=792
135+729=864
138+429=567
138+654=792
139+428=567
139+725=864
142+596=738
142+695=837
143+586=729
145+692=837
146+583=729
146+592=738
152+487=639
152+784=936
154+629=783
154+638=792
154+782=936
157+329=486
157+482=639
158+634=792
159+327=486
159+624=783
162+387=549
162+783=945
163+782=945
167+328=495
167+382=549
168+327=495
173+286=459
173+295=468
175+293=468
176+283=459
182+367=549
182+394=576
182+457=639
182+493=675
182+754=936
182+763=945
183+276=459
183+492=675
183+546=729
183+762=945
184+392=576
184+752=936
186+273=459
186+543=729
187+362=549
187+452=639
192+384=576
192+483=675
192+546=738
192+645=837
193+275=468
193+482=675
194+382=576
195+273=468
195+642=837
196+542=738
214+569=783
214+659=873
215+478=693
215+748=963
216+378=594
216+738=954
218+349=567
218+376=594
218+439=657
218+475=693
218+736=954
218+745=963
219+348=567
219+438=657
219+564=783
219+654=873
234+657=891
235+746=981
236+718=954
236+745=981
237+654=891
  相关解决方案