举重时,我想通过将几块板连接到一根杆上来达到特定的重量。
我有以下板块:
- 6个每块1公斤的盘子
- 6盘2.5公斤装
- 6盘5公斤装
- 6盘10公斤装
酒吧本身重10公斤。
只允许成对安装板-将板连接在钢筋的两端,并且两端的布置必须完全对称(例如,在一端连接两个5公斤重的盘子,在一端连接10公斤重的盘子)出于安全考虑,另一端被禁止)。
编写一个程序或函数,告诉我要获得给定的总重量,我必须使用每种类型的板数。输入为大于11的整数。输出是一个包含4个数字的列表/数组/字符串。如果不可能合并现有板块以获得目标重量,则输出零/空数组,无效字符串,引发异常等。
如果有多种解决方案,则代码只能输出一种(不要让用户选择-他忙于其他事情)。
测试用例:
12 -> [2 0 0 0] - 2 plates of 1 kg plus the bar of 10 kg
13 -> [0 0 0 0] - a special-case output that means "impossible"
20 -> [0 0 2 0] - 2 plates of 5 kg + bar
20 -> [0 4 0 0] - a different acceptable solution for the above
21 -> [6 2 0 0] - 6 plates of 1 kg + 2 plates of 2.5 kg + bar
28 -> [0 0 0 0] - impossible
45 -> [0 2 6 0] - a solution for a random number in range
112 -> [2 4 6 6] - a solution for a random number in range
121 -> [6 6 6 6] - maximal weight for which a solution is possible
如果您的代码以相反的顺序输出数字(从厚板到轻板),请明确指定此编号以避免混淆。