演算法提高 色盲的民主
時間限制:1.0s 記憶體限制:256.0mb
問題描述
n個色盲聚在一起,討論一塊布的顏色。儘管都是色盲,卻盲得各不相同。每個人都有自己的主張,爭論不休。最終,他們決定採取民主投票的方式決定布的顏色,不管布同不同意。某種顏色用字串表示(字串為顏色單詞或片語,也就是可能有被空格隔開的兩個單詞組成的顏色片語),只要字串不同,程式即判斷顏色不同。現在給出這n個人所選擇的顏色,輸出最有可能的顏色(也就是獲得投票最多的顏色),如果有多個顏色獲得了最多的投票,則將它們按字典序分行全部輸出。
輸入格式
第一行乙個正整數n,表示色盲的人數
接下來n行,每行一句話
輸出格式
若干行,獲得投票最多的顏色,按字典序輸出
樣例輸入 5
redblue
black
black
blue
樣例輸出
black
blue
資料規模和約定
n<=1000
顏色單詞最多20個字元,只包含小寫字母或者空格 注
對於char s[20],由於cin >> s是讀取到空格處便會結束,也就是對於light red,用cin只能輸入light。如果要整個輸入一行,則使用cin.getline(s, 20),其中20為這一行的最大長度,也就是你的s的容量,如果容量為30,則cin.getline(s, 30)。
另外,你在cin>>n以後cin.getline(s,30)應該會得到乙個空字串,這是因為整數n後面的換行符還未被輸入。
作者注釋:當看到「字典排序」,就想到用結構體,用qsort來做,還是掌握的不牢固,在大牛的指導下結合之前做過的題完成了**。思路和細節看**注釋。
1 #include2 #include上述過程在思路上沒有問題,但是對於本題提交是不通過的——錯在資料的處理的細節上。3 #include4 #include5 #include6
/*定義乙個結構體:包括定義顏色的名稱及其個數
*/7 typedef struct
colorcol;
11int cmp(const
void *a,const
void *b)else20}
21int
main()
36//
若已經存了,該顏色數量+1
37if(re!=j)
40//
若沒有存,此時存進去
41else46}
47//
排序 48 qsort(co,re,sizeof(co[0
]),cmp);
49for(int i=0;i)53}
54return0;
55 }
%s:格式化字串,不能接收回車換行空格符;
gets():用於從讀入乙個整行,以'\n'或eof結束;
getchar():用於讀入乙個字元,並返回這個字元.
對於本題:輸入n後有乙個換行,而且每個顏色後都有乙個換行,因此要注意用getchar()來接收換行,用gets(),接收資料。
1/*2注意:%s不能接收空格、回車;
3getchar()可以消除回車、空格符;
4gets()一般與getchar()配合使用。 5*/
6 #include7 #include
8 #include9 #include10 #include11
/*定義乙個結構體:包括定義顏色的名稱及其個數
*/12 typedef struct
colorcol;
16int cmp(const
void *a,const
void *b)else25}
26int
main()
43//
若已經存了,該顏色數量+1
44if(re!=j)
47//
若沒有存,此時存進去
48else53}
54//
排序 55 qsort(co,re,sizeof(co[0
色盲的民主
題目描述 n個色盲聚在一 起,討論一塊布的顏色。儘管都是色盲,卻盲得各不相同。每個人都有自己的主張,爭論不休。最終,他們決定採取民主投票的方式決定布的顏色,不管布同不同 意。某種顏色用字串表示 字串為顏色單詞或片語,也就是可能有被空格隔開的兩個單詞組成的顏色片語 只要字串不同,程式即判斷顏色不同。現...
問題 色盲的民主
演算法提高 色盲的民主 時間限制 1.0s 記憶體限制 256.0mb 色盲的民主 問題描述 n個色盲聚在一 起,討論一塊布的顏色。儘管都是色盲,卻盲得各不相同。每個人都有自己的主張,爭論不休。最終,他們決定採取民主投票的方式決定布的顏色,不管布同不同 意。某種顏色用字串表示 字串為顏色單詞或片語,...
演算法提高 色盲的民主
題目鏈結 問題描述 n個色盲聚在一起,討論一塊布的顏色。儘管都是色盲,卻盲得各不相同。每個人都有自己的主張,爭論不休。最終,他們決定採取民主投票的方式決定布的顏色,不管布同不同意。某種顏色用字串表示 字串為顏色單詞或片語,也就是可能有被空格隔開的兩個單詞組成的顏色片語 只要字串不同,程式即判斷顏色不...