我在混合厂有12种产品(称为a-l),需要产生不同的百分比,总和显然要达到100%。下面的代码很简单,但效率非常低。是否有更有效的算法?
*编辑:如下面所述,有太多的可能性要计算,无论是否高效。我将把这个问题改为只有最多5种或12种产品混合物,并针对从12种产品中选择5种产品的方式运行它。
有Python代码,您们中的一些人已经指出了如何计算组合的可能性。但是我的Python很少(即0%),你们中的某人能用Java术语解释一下吗?我可以在Java中获得组合(http://www.cs.colostate.edu/~cs161/Fall12/lecture-codes/Subsets.java)
*编辑:如下面所述,有太多的可能性要计算,无论是否高效。我将把这个问题改为只有最多5种或12种产品混合物,并针对从12种产品中选择5种产品的方式运行它。
有Python代码,您们中的一些人已经指出了如何计算组合的可能性。但是我的Python很少(即0%),你们中的某人能用Java术语解释一下吗?我可以在Java中获得组合(http://www.cs.colostate.edu/~cs161/Fall12/lecture-codes/Subsets.java)
public class Main {
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {
for(int a=0;a<=100;a++){
for(int b=0;b<=100;b++){
for(int c=0;c<=100;c++){
for(int d=0;d<=100;d++){
for(int e=0;e<=100;e++){
for(int f=0;f<=100;f++){
for(int g=0;g<=100;g++){
for(int h=0;h<=100;h++){
for(int i=0;i<=100;i++){
for(int j=0;j<=100;j++){
for(int k=0;k<=100;k++){
for(int l=0;l<=100;l++){
if(a+b+c+d+e+f+g+h+i+j+k+l==100)
{
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h+" "+i+" "+j+" "+k+" "+l);
}}}}}}}}}}}}}
}
}
FileNotFoundException
和UnsupportedEncodingException
异常。 - devnullfor(int b=0;b<=100-a;b++) for(int c=0;c<=100-a-b;c++) ...
(或类似的代码) - Bernhard Barker