[讨论] 排列组合的算法解题

楼主: applebeing (苹果人)   2020-08-31 14:46:23
求职时线上测验的问题,有算出解答,但觉得应该有更好的解法,
向各位版友请教解题想法。
问题如下:
一个七位数的数字,从第七位到个位数的顺序开始比对。
若当前位数的值,不小于曾出现过的数的最大值,就记录起来。
请问纪录结果为四个数字的可能组合数有几组?
例:
2334849 - 由左至右
第一位数 2 加入纪录
第二位数 3 大于等于2,加入纪录
第三位数 3 大于等于3,加入纪录
第四位数 4 大于等于3,加入纪录
第五位数 8 大于等于4,加入纪录
第六位数 4 不纪录
第七位数 9 大于等于8,加入纪录
纪录结果为 6
6429748 - 纪录 69 (2个数)
4629889 - 纪录 4699(4个数)
各位数可以为 0,例如 0001234、0007899 也符合要求。
我用循环跑 1~一千万涵盖七位数,每个数字都检查纪录结果,得出组数。
跑了五分多钟,很笨也很没有效率。
想请问是否有更效率的解题方式?
请大家指教,感谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com