如题
很直观的思路,检索先找到R然后在它的4个方向上向外检索,先检索到B退出,直接检索到p这计数+1
public static int numRookCaptures(char[][] board) {
int count =0;
for(int i=0;i<8;i++) {
for(int j=0;j<8;j++) {
if(board[i][j]=='R') {//检索R
int k = i;
while(k>0) {//向上检索退出条件为k=0
--k;//i-1开始
if(board[k][j]=='B') {//先检索到B 直接退出
break;
}else if(board[k][j]=='p'){//先检索到p 计数+1后退出
count++;
break;
}
}
k=i;
while(k<7) {//向下检索
++k;
if(board[k][j]=='B') {
break;
}else if(board[k][j]=='p'){
count++;
break;
}
}
k=j;
while(k>0) {//向左
--k;
if(board[i][k]=='B') {
break;
}else if(board[i][k]=='p'){
count++;
break;
}
}
k=j;
while(k<7) {//向右
++k;
if(board[i][k]=='B') {
break;
}else if(board[i][k]=='p'){
count++;
break;
}
}
return count;
}
}
}
return count;
}
很直观的写法