1. 程式人生 > >知識點總結報告 2.3

知識點總結報告 2.3

gpo urn 結構 需要 rfi turn 統計 i++ n)

知識點:枚舉

枚舉(Enumeration)是C的基礎數據結構之一不是構造數據結構,即一一列舉之意。在枚舉思想就是把有限個可能全部列舉出來。

枚舉法的本質就是從所有候選答案中去搜索正確的解,使用該算法需要滿足兩個條件:(1)可預先確定候選答案的數量;(2)候選答案的範圍在求解之前必須有一個確定的集合。 枚舉法雖然是“暴力求解”,時空效率低,在數據量龐大時更是如此,但是枚舉法簡單,容易理解,在小範圍內應用很收到不錯的效果。 習題:Let the Balloon Rise http://acm.hdu.edu.cn/showproblem.php?pid=1004 分析:本題會給出N組測試用例,每組的第一行是m,以下是m行字符串(熱氣球的顏色),統計哪種顏色出現次數最多並打印該顏色。用枚舉來解題。首先我們用二維字符數組存儲顏色,定義一個計數用的數組,下標一一對應。然後用雙層循環遍歷每一行的顏色總共出現了幾次,並存入計數數組中。對計數數組進行處理,找到其中最大值的下標,最後用下標輸出顏色。 獻上代碼:
#include <stdio.h>
#include 
<stdlib.h> #include <string.h> #define MAX_SIZE 1000 int FindMaxIndex(int [],int ); int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==0) exit(0); int i,j,index; int num[MAX_SIZE]={0}; char color[MAX_SIZE][16]; for(i=0;i<n;i++) scanf(
" %s",color[i]); for(i=0;i<n;i++) for(j=0;j<n;j++) { if(!strcmp(color[i],color[j])) num[i]+=1; } index=FindMaxIndex(num,n); printf("%s\n",color[index]); } return 0; } int FindMaxIndex(int num[],int n) { int MAX=num[0
],Index=0; int i; for(i=0;i<n;i++) if(MAX<num[i]) { MAX=num[i]; Index=i; } return Index; }

知識點總結報告 2.3