#16455: C的


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
d431. 第三題: 賓果遊戲 (bingo) -- 92學年度北基區資訊學科能力競賽 | From: [27.52.77.116] | 發表日期 : 2019-01-02 17:11

首先建陣列儲存 A卡 跟 B卡,同時這兩張卡分別建一個判斷用的陣列,0 表示該位子號碼還沒被叫到,1 則表示有

每次讀到一個數字,比對賓果卡後,將對應位置標記為 1,然後丟進判斷用的函式

判斷賓果連線是用下面這個函式

int bingo(bool a[5][5])   /* a [5][5] 是判斷用的陣列 */
{
	int i, line=0;
	for(i=0;i<5;i++)
	{
		if(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4]==5)   /* 橫列都是 1 */
			line++;
		if(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]==5)   /* 直行都是 1 */
			line++;
	}
	if(a[0][0]+a[1][1]+a[2][2]+a[3][3]+a[4][4]==5)  /* 左上 - 右下 對角線 */
		line++;
	if(a[0][4]+a[1][3]+a[2][2]+a[3][1]+a[4][0]==5)  /* 右上 - 左下 對角線 */
		line++;
	return line;
}

PS:C 沒有 bool ,要自己 define 

雖然每次叫號都要重新判斷,但是可以處理同時連成 5 條線而平手的情形,用 if-else 就可以輕鬆解決
 
ZeroJudge Forum