class Test {
public static int compute(int m[],int k) { // array is 1 based! (the 0 element is ignored)
return compute(m,m.length-1,k);
}
public static int compute(int m[],int n,int k) { // array is 1 based! (the 0 element is ignored)
if(n<k) return 0;
else if(k==0) return 1;
else if(k==n) {
int x=1;
for(int i=1;i<=k;i++) x*=m[i];
return x;
}
else return compute(m,n-1,k) + m[n]*compute(m,n-1,k-1);
}
int[] m = new int[]{0,4,3,2,1,1};
int k=2;
int res = compute(m,k);
System.
out.
println("k=" +k
+" combin=" + res
+ " m_j=" +java.
util.
Arrays.
toString(m
)); }
}
Y2xhc3MgVGVzdCB7CgogICAgcHVibGljIHN0YXRpYyBpbnQgY29tcHV0ZShpbnQgbVtdLGludCBrKSB7IC8vIGFycmF5IGlzIDEgYmFzZWQhICh0aGUgMCBlbGVtZW50IGlzIGlnbm9yZWQpCgkJcmV0dXJuIGNvbXB1dGUobSxtLmxlbmd0aC0xLGspOwoJfQoJCglwdWJsaWMgc3RhdGljIGludCBjb21wdXRlKGludCBtW10saW50IG4saW50IGspIHsgLy8gYXJyYXkgaXMgMSBiYXNlZCEgKHRoZSAwIGVsZW1lbnQgaXMgaWdub3JlZCkKCQkJaWYobjxrKSByZXR1cm4gMDsKCQkJZWxzZSBpZihrPT0wKSByZXR1cm4gMTsKCQkJZWxzZSBpZihrPT1uKSB7CgkJCQlpbnQgeD0xOwoJCQkJZm9yKGludCBpPTE7aTw9aztpKyspIHgqPW1baV07CgkJCQlyZXR1cm4geDsKCQkJfQoJCQllbHNlIHJldHVybiBjb21wdXRlKG0sbi0xLGspICsgbVtuXSpjb21wdXRlKG0sbi0xLGstMSk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24gewoJCWludFtdIG0gPSBuZXcgaW50W117MCw0LDMsMiwxLDF9OwoJCWludCBrPTI7CgkJaW50IHJlcyA9IGNvbXB1dGUobSxrKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIms9IiArayArIiBjb21iaW49IiArIHJlcysgICIgbV9qPSIgK2phdmEudXRpbC5BcnJheXMudG9TdHJpbmcobSkpOwoJfQoKfQ==