洛谷 P2550 [AHOI2001]彩票搖獎

這裏是引用
在這裏插入圖片描述

AC代碼:

flag 既記錄中將號碼個數,即中幾等獎;同時又做 buf 數組下標。一值雙用。

buf 數組定義長度爲8,flag = 7時,表示中特等獎,同時賦值給 buf [ flag ];flag = 0時,表示未中獎,將 buf [ flag ]賦值爲0。所以buf數組下標1—7,記錄一等獎~特等獎中將次數。

#include<stdio.h>
#include<string.h>
 
int main(){
	int n, a[7], b[1005][7];  // 數組 a 記錄中獎號碼 ,二維數組 b 記錄每張彩票號碼
	scanf("%d", &n);
	for(int i=0; i<7; i++){
		scanf("%d", &a[i]);
	}
	
	for(int i=0; i<n; i++){    //輸入量不大,採用7個 scanf 語句讀入,降低複雜度
		scanf("%d", &b[i][0]);
		scanf("%d", &b[i][1]);
		scanf("%d", &b[i][2]);
		scanf("%d", &b[i][3]);
		scanf("%d", &b[i][4]);
		scanf("%d", &b[i][5]);
		scanf("%d", &b[i][6]);
	}
	 
	int buf[8];                    //buf 記錄7個獎項中,每個獎項中獎張數 
	memset(buf, 0, sizeof(buf));  //將數組 buf 全部置 0 
	for(int i=0; i<n; i++){        //循環遍歷 n 張 
		int flag = 0;              // flag 記錄有幾個相同號碼,同時做 buf 下標
		for(int j=0; j<7; j++){    // j 是中獎號碼數組 a 的下標 
			if(b[i][j] == a[0]) flag += 1;
			if(b[i][j] == a[1]) flag += 1;
			if(b[i][j] == a[2]) flag += 1;
			if(b[i][j] == a[3]) flag += 1;
			if(b[i][j] == a[4]) flag += 1;
			if(b[i][j] == a[5]) flag += 1;
			if(b[i][j] == a[6]) flag += 1;
		}
		buf[flag] += 1;  //flag = 7 時表示特等獎; flag = 0 表示沒有中獎 
	} 
	
	printf("%d ", buf[7]);
	for(int i=6; i>0; i--){
		printf("%d ", buf[i]);
	} 
	
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章