全國綠色計算大賽 模擬賽第二階段(Java)第3關:渡口與船
阿新 • • 發佈:2018-12-13
挑戰任務
給定一個渡口(二維的),請計算渡口中停了多少艘船。 船用 +
表示,空位用字母o
表示。 你需要遵守以下規則:
- 給你一個有效的渡口(二維陣列),僅由船和空位組成。
- 船隻能水平或者垂直放置。換句話說,船隻能由
1
行,N
列組成,或者N
行,1
列組成,其中N
可以是任意大小。 - 兩艘船之間至少有一個水平或垂直的空位分隔,即沒有相鄰的船。
程式設計要求
補充完善右側程式碼區中的countOfShips(char[][] ferry)
函式,實現根據輸入的陣列來判斷船的數量,將船的數量作為返回值返回。
測試說明
樣例1
輸入:3 4
+ + + +
o o o o
o o o o
輸出:
1
樣例2
輸入:3 4
+ o o +
o o o +
o o o +
輸出:
2
注意:右側測試集中有輸入引數傳入,如:3 4
,這兩個數字是後臺構建渡口時傳入的大小,不會作為函式countOfShips
的引數傳入,可以忽略這兩個數字的作用。
無效樣例:
o o o +
+ + + +
o o o +
你不會收到這樣的無效樣例,因為船之間至少會有一個空位將它們分開。
開始挑戰吧,祝你成功!
package step3; public class Task { public int countOfShips(char[][] ferry) { int boat = 0; /**************BEGIN************/ for(int i = 0 ; i < ferry.length;i++) { for(int j = 0 ; j < ferry[i].length;j++) { if(ferry[i][j] == '+') { for(int k = i+1 ; k < ferry.length ; k++) { if(ferry[k][j]=='o') { break; }else { ferry[k][j]='o';//把查過的變為o } } for(int k = j+1 ; k < ferry[i].length ; k++) { j = k; if(ferry[i][k]=='o') { break; } } boat++; } } } /***********END ***************/ return boat; } }