1. 程式人生 > >12.6 水王

12.6 水王

設有 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
}
16
else
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 水王