算法-算法:两个三位数相加得到一个四位数

前端开发 前端开发 主题:1148 回复:2395

算法-算法:两个三位数相加得到一个四位数

浮生未歇 发布于 2017-01-31 字数 182 浏览 1228 回复 3

两个三位数相加得到一个四位数,并且这三个数字的每一位都不相同,输出这样的算式,例如。(就是要把0-9这10个数全用上):
354+908=1262;
304+968=1272;

求高效的算法。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

虐人心 2017-06-08 3 楼

参考下百度知道:
http://wenwen.soso.com/z/q224244606.htm

虽然百度还不知道你得问题的答案,但是思路很有-意思,值得参考下。

甜柠檬 2017-03-18 2 楼

我记得有一个算法,DFS,应该可以做到..可以类比下素数环..只是条件不同而已..

归属感 2017-02-04 1 楼

我说下我的思路吧,代码我就没时间打了:

主要的方法还是用高中老师在讲排列组合时,所用到的插空法:

第一步:用插空法获取可能的组合,例:
要获取四个数可以记作111111,那么就有6个空位,7个空格,计一个空格为0,那么可以:
0110110101 就是1,2,4,5,7,9
也可以: 0000111111 就是4,5,6,7,8,9

由此可以快速的得到在10个数中取6个数所有的可能,总共有C(10,6)个

第二步:将获得的6个数存放在数组中记作数组a
第三步:由于插空法得到的数列特点是一个有序数列,所以只需判断a[0]+a[5]是否等于或大于10,如果是10就捕获该数组,如果不是则放弃捕获该数组。
第四步:将得到的数组a首尾相加直到小于10,计能获得n组相加大于或等于10的组合,那么这个数组中所能得到的组合应是2nA(4,4)个,将结果输出。