public class PlatypusPaternity {
public static void main(String args[]) {
new PlatypusPaternity();
}
public PlatypusPaternity() {
String[] f = { "YYNNYYNNYYNN", "YNYNYNYNYNYN", "YYYNNNYYYNNN" };
String[] m = { "NYYNNYYNNYYN", "YYNYYYNYYYNY", "NNNNNNYYYYYY" };
String[] s = { "NYNNNYNNNNNN", "NNNNNNNNYNNN", "NNYNNNNNNNYN",
"YNNNNNNYNNNN", "NNNNNNNNNYNY", "NNNYYNYNNNNN" };
System.out.println(maxFamily(f, m, s));
}
public int maxFamily(String[] femaleCompatibility,
String[] maleCompatibility, String[] siblingGroups) {
int result = 0;
int childCount = femaleCompatibility[0].length();
int groupCount = siblingGroups.length;
for (int f = 0; f < femaleCompatibility.length; f++) {
for (int m = 0; m < maleCompatibility.length; m++) {
// test Female[f] and male[m]
for (int g = 0; g < groupCount; g++) {
// compute child count in gropu[g].
System.out.println("*********");
int temp = 0;
boolean exist = true;
for (int c = 0; c < childCount && exist; c++) {
// femaleCompatibility[f].charAt[c]==maleCompatibility[m].charAt[c]
// && in group[g]
if (siblingGroups[g].charAt(c) == 'Y') {
if (femaleCompatibility[f].charAt(c) == maleCompatibility[m]
.charAt(c)) {
temp++;
System.out.println("f:" + f + " m:" + m + " c:"
+ c + " g:" + g);
} else {
temp = 0;
exist = false;
System.out.println("error");
break;
}
}
}
if(true){
//same parents, different group.
//femaleCompatibility[f][c] and maleCompatibility[m][c]
for(int c=0;c<childCount;c++){
if(femaleCompatibility[f].charAt(c)==maleCompatibility[f].charAt(c) && siblingGroups[g].charAt(c)=='N'){
temp=0;
System.out.println("erro2");
break;
}
}
}
if (result < temp)
result = temp;
}
}
}
if (result == 0)
return 0;
else
return result + 2;
}
}