今回は全探索みたいに書けた様な気がします!でも、枝刈りの意識をもうちょっとしたほうがいいかな・・・
public class Main {
int highestScore(String[] friends) {
int[] score = new int[friends.length];
for(int r = 0; r < friends.length; r++) {
for(int c = 0; c < friends[r].length(); c++) {
if(friends[r].charAt(c) == 'Y') {
score[r]++;
} else if(r != c) {
for(int k = 0; k < friends.length; k++) {
if(k == r || k == c) continue;
if(friends[k].charAt(r) == 'Y' && friends[k].charAt(c) == 'Y') {
score[r]++;
break;
}
}
}
}
}
int max = Integer.MIN_VALUE;
for(int r = 0; r < score.length; r++) {
max = Math.max(max, score[r]);
}
return(max);
}
void doIt() {
//0
String[] friends = {
"NNN",
"NNN",
"NNN",
};
//2
String[] friends2 = {
"NYY",
"YNY",
"YYN",
};
//4
String[] friends3 = {
"NYNNN",
"YNYNN",
"NYNYN",
"NNYNY",
"NNNYN",
};
//8
String[] friends4 = {
"NNNNYNNNNN",
"NNNNYNYYNN",
"NNNYYYNNNN",
"NNYNNNNNNN",
"YYYNNNNNNY",
"NNYNNNNNYN",
"NYNNNNNYNN",
"NYNNNNYNNN",
"NNNNNYNNNN",
"NNNNYNNNNN",
};
//6
String[] friends5 = {
"NNNNNNNNNNNNNNY",
"NNNNNNNNNNNNNNN",
"NNNNNNNYNNNNNNN",
"NNNNNNNYNNNNNNY",
"NNNNNNNNNNNNNNY",
"NNNNNNNNYNNNNNN",
"NNNNNNNNNNNNNNN",
"NNYYNNNNNNNNNNN",
"NNNNNYNNNNNYNNN",
"NNNNNNNNNNNNNNY",
"NNNNNNNNNNNNNNN",
"NNNNNNNNYNNNNNN",
"NNNNNNNNNNNNNNN",
"NNNNNNNNNNNNNNN",
"YNNYYNNNNYNNNNN",
};
System.out.println(highestScore(friends5));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Main().doIt();
}
}