这是我最近在数学问题中遇到的一个编程问题。
所以给定n
,我希望找到整数a_i (1<=i<=n)
的所有组合
a_1^2+a_2^2+...a_n^2 = 1
编辑:将a_i
限制为小数点后十位(即增量0.01)。例如,如果n = 3
,我将a_1 = 0.01
,a_2 = 0.01
,a_3 = sqrt(1-a_1^2-a_2^2);
然后增加a_2 = 0.02
,依此类推。
我无法n
嵌套for循环,因为n
可能是10位数字(夸大)。
我该怎么做?
答案 0 :(得分:1)
尝试扩大问题
制作一个整数方块的列表/数组
Squares = {1, 4, 9, 16, .., 9801, 10000}
查找N个列表值的组合以生成10000.您可以使用动态编程来获得解决方案 N = 8的可能组合的例子:
9801+100+64+25+4+4+1+1
对应重新缩放的数字
0.99 0.1 0.08 0.05 0.02 0.02 0.01 0.01
请注意,对于较大的N值,组合数量会非常大