我写了一个得分函数正确地评估以下的N×N阵列:有没有一种更优雅的方式来为NxN数组编写分数函数?
int state1[][] = {
{0, 1, 0},
{1, 0, 0},
{0, 1, 0} }; // score = 0
int state2[][] = {
{0, 1, 1},
{1, 0, 0},
{1, 1, 0} }; // score = 2
int state3[][] = {
{1, 1, 0},
{1, 1, 1},
{1, 0, 0} }; // score = 5
是否有一个更优雅的(简单)的方式来写出下列分数的功能?
public static int score(int[][] s) {
int count = 0;
int hold = 0;
int length = s.length;
int end = length - 1;
for (int col = 0; col < length; col++) {
for (int row = 0; row < length; row++) {
hold = s[row][col];
if (row == 0 && hold == 1 && s[row + 1][col] == 1) {
count++;
}
else if (row == end && hold == 1 && s[row - 1][col] == 1) {
count++;
}
else if (row != 0 && row != end && hold == 1 && (s[row + 1][col] == 1 || s[row - 1][col] == 1)) {
count++;
}
}
}
return count;
}
让我补充一点,得分取决于“1”是否在其上方或下方有另一个“1”。换句话说,如果第1行中有“1”,则在第0行或第2行中同一列中存在“1”的情况下,得分递增。
描述什么功能呢? – Justas
codereview.stackexchange.com是一个更好的地方寻求帮助改善工作代码。 – GER