我寫了一個得分函數正確地評估以下的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