12.6 水王
阿新 • • 發佈:2018-12-09
設有 div info 技術 中間 代碼實現 wan ios com
一、題目要求
三人行設計了一個灌水論壇。信息學院的學生都喜歡在上面交流灌水,傳說在論壇上有一個“水王”,他不但喜歡發帖,還會回復其他ID發的每個帖子。坊間風聞該“水王”發帖數目超過了帖子數目的一半。 如果你有一張當前論壇的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到這個傳說中的水王嗎?
二、設計思想
刪掉相鄰的不同的ID,由於“水王”發帖數目超過了帖子數目的一半,這樣剩下的ID一定是水王的ID
三、代碼實現
1 #include<iostream.h>
2 void main()
3 {
4 int arr[10]={3,3,6,4,3,5,3,3,7,3};//假設的ID號
5 int shuiwang = 0;
6 int count=0; //標記
7 cout<<"假設有10個ID,分別為:";
8 for(int i=0;i<10;i++)
9 {
10 cout<<arr[i]<<" ";
11 if(count == 0)
12 {
13 shuiwang = arr[i];
14 count = 1;
15 }
16else
17 {
18 if(shuiwang == arr[i])
19 count ++;
20 else
21 count --;
22 } 2
3 }
24 cout<<endl<<"水王的ID是"<<shuiwang<<endl;
25 }
四、運行截圖
五、實驗總結
在剛開始思考這個問題的時候,用了最笨的方法,就是先排序,由於“水王”發帖數目超過了帖子數目的一半,然後發現中間的ID一定是水王的ID,不過這樣的時間復雜度最小是O(n+lg(n)),不滿足老師的要求,所以只能一次遍歷然後就找到水王的ID。在實現的過程中改了好多次,總是不太順利,不過最終在同學的幫助下還是完成了!
12.6 水王