華為OD機試-五子棋迷
張兵和王武是五子棋迷,工作之余經(jīng)常切磋棋藝。這不,這會兒又下起來了。走了一會兒,輪張兵了,對著一條線思考起來了,這條線上的棋子分布如下
用數(shù)組表示: -1 0 1 1 1 0 1 01 1
棋子分布說明:
1.-1代表白子,0代表空位,1 代表黑子
2.數(shù)組長度L,滿足 1 < L < 40,且L為奇數(shù)
你得幫他寫一個程序,算出最有利的出子位置。最有利定義
1.找到一個空位(0),用棋子(1/-1)填充該位置,可以使得當(dāng)前子的最大連續(xù)長度變大
2.如果存在多個位置,返回最靠近中間的較小的那個坐標(biāo);
3.如果不存在可行位置,直接返回-1:
4.連續(xù)長度不能超過5個(五字棋約束)
輸入描述:
第一行: 當(dāng)前出子顏色
第二行: 當(dāng)前的棋局狀態(tài)
輸出描述
1個整數(shù),表示出子位置的數(shù)組下標(biāo)
示例1
輸入:
1
-1 0 1 1 1 0 1 0 1 -1 1
輸出:
5
說明:
當(dāng)前為黑子 (1),放置在下標(biāo)為5的位置,黑子的最大連續(xù)長度,可以由3到5
示例2
輸入:
-1
-1 0 1 1 1 0 1 0 1 -1 1
輸出:
1
說明:
當(dāng)前為白子,唯一可以放置的位置下標(biāo)為1,白子的最大長度,由1變?yōu)?
示例3
輸入:
1
0 0 0 0 1 0 0 0 0 1 0
輸出:
5
說明:
可行的位置很多,5最接近中間的位置坐標(biāo)
Java 實現(xiàn):https://renjie.blog.csdn.net/article/details/130789957
Python實現(xiàn):https://renjie.blog.csdn.net/article/details/130819187
C++ 實現(xiàn):https://renjie.blog.csdn.net/article/details/130819198
JavaScript實現(xiàn):https://renjie.blog.csdn.net/article/details/130819174
C實現(xiàn):https://renjie.blog.csdn.net/article/details/130819212