1.設計思想
①存id到乙個陣列
②當某水王出現次數0次時:如果新出現的和別的水王id相同,別的水王出現次數+1;如果不是,那麼它是新水王,記錄並給它自己次數+1
③如果出現與某水王相同id,某水王id出現次數+1;如果出現全新id,全部水王id出現次數-1
2.**實現
//3.測試截圖2016-5-26 李娜
//尋找三個發帖數量超過了1/4的「水王」
#include
#include
#include
#define n 50
using
namespace
std;
intmain()
;//存id
ifstream infile(
"e:\\sw.txt");
if (!infile)
while (getline(infile,id))//
讀取每行的id
/////////////////////////////////////////////
//////
/以上:將檔案內容給a[i]
/////////////////////
////////
/以下:算水王
/////////////////////////////////
//////////////////////////////////////////
//int s=;//
分別給三個水王計數用
string sw=;//
存水王id
for(j=0;j)
else
if (a[j]==sw[2])//
如果又出現是第3個水王
else
//這是新水王
}else
if (s[1]==0)//
水王2出現0次,以下**同上含義
else
if (a[j]==sw[2
])
else
}else
if (s[2]==0)//
水王3出現0次,以下**同上含義
else
if (a[j]==sw[1
])
else
}else
//水王都有存資料了,有可能出現重複的資料,也有可能是新資料;所以重複了就次數+1,新的就次數都-1
else
if (sw[1]==a[i])
else
if (sw[2]==a[i])
else
s[0]--,s[1]--,s[2]--;}}
for (int k=0;k<3;k++)
}
4.個人總結
本來是用陣列,一組一組比,但是出現兩個結果:
一是全變成最後乙個id
二是全一樣的id
我發現那樣會覆蓋,所以不能那樣比
尋找發帖「水王」
分析與解法 首先想到的是乙個最直接的方法,我們可以對所有id進行排序。然後再掃瞄一遍排好序的id列表,統計各個id出現的次數。如果某個id出現的次數超過總數的一半,那麼就輸出這個id。這個演算法的時間複雜度為o n log2 n n 如果id列表已經是有序的,還需要掃瞄一遍整個列表來統計各個id出現...
尋找發帖水王
首先想到的是乙個最直接的方法,我們可以對所有id進行排序。然後再掃瞄一遍排好序的id列表,統計各個id出現的次數。如果某個id出現的次數超過總數的一半,那麼就輸出這個id。這個演算法的時間複雜度為o n log2 n n 如果id列表已經是有序的,還需要掃瞄一遍整個列表來統計各個id出現的次數嗎?如...
尋找發帖「水王」
題目 解法1 對所有id排序,因為該id出現的次數超過總數的一半,對有序的序列,第n 2項即為所求id。解法2 每次刪除兩個不同的id,那麼剩下的id列表中,水王 的id次數仍然超過總數的一半。可以通過不斷重複這個過程,把id列表中的id總數降低,從而得到答案。總的時間複雜度只有o n 且只需要常熟...