combntns(例如,combntns(some_vector,i))函数抛出:
错误:未定义'combntns'函数用于'double'类型的输入参数
但在我的机器上,它把i当作双精度。如果我将I转换为int8,它甚至会抛出它。
用nchoosek代替combnts或combnk
起初,我认为寻找任意大小的元素集(1个元素集、2个元素集等等)是相当困难的,但后来我意识到,vector元素的任何选择都对应于二进制代码('1'表示选择该元素,'0'表示不选择它)。为了选择所有可能的元素组合,我只需要使用从1到2^(1+长度(v))-1的二进制代码。
起初,我认为寻找任意大小的元素集(1个元素集、2个元素集等等)是相当困难的,但后来我意识到,vector元素的任何选择都对应于二进制代码('1'表示选择该元素,'0'表示不选择它)。为了选择所有可能的元素组合,我只需要使用从1到2^(1+长度(v))-1的二进制代码。
为什么这样不行?
它可以在我的笔记本电脑上运行;
函数ind = subset_sum(v,n)
k = dec2bin(0:2 ^长度(v) 1);
b = k。* v;
l =发现(和(b) = = n);
m = k (l:)。*(1:长度(v));
印第安纳州= m (m > 0);
结束
Nchoosek功能太棒了!
显然这是失败的,因为我的空矩阵
1×0 (size 0) double
但是测试用例3需要一个空矩阵
0×0 (size 0) double
嗯……
显然这是失败的,因为我的空矩阵是1×0(大小为0)倍,但测试用例3需要一个空矩阵是0×0(大小为0)倍嗯,....
[随后修改为通过测试套件的解决方案1163376。]
而我认为我应该休息和思考更多....
我哪里做错了?如果我在我的计算机上输入代码,我将得到第一个和最后一个情况的正确解。金宝搏官方网站我甚至从工作区中清除了所有其他变量。
显然我用错了数据库。
伟大的解决方案
巧妙的解决方案。我自己也想不出来