(1)設計思想
水王的文章超過一半,在一次周遊的時候進行計數,初始值n=0;從第一個開始用m記錄下ID,如果相鄰兩個ID一樣,n就加一,m不變,如果不一樣,n就減一,m不變,直到當n小于0的時候,讓m為第二個ID,n=0。最後n>0,m表示的ID就是水王。
(2)源代碼:

#include"iostream"
using namespace std;
void Data(int l,int A[]);
int main()
{
int l;//長度
int target[3]={0,0,0};
int ID[3]={-1,-1,-1};
cout<<"請輸入文章數量:";
cin>>l;
int * shuitong=new int [l];
Data(l,shuitong);
for(int i=0;i<l;i++)
{
if(target[0]==0 && shuitong[i]!=ID[1] && shuitong[i]!=ID[2])
{
target[0]=1;
ID[0]=shuitong[i];
}
else if(target[1]==0 && shuitong[i]!=ID[0] && shuitong[i]!=ID[2])
{
target[1]=1;
ID[1]=shuitong[i];
}
else if(target[2]==0 && shuitong[i]!=ID[0] && shuitong[i]!=ID[1])
{
target[2]=1;
ID[2]=shuitong[i];
}
else if(shuitong[i]!=ID[0] && shuitong[i]!=ID[1] && shuitong[i]!=ID[2])
{
target[0]--;
target[1]--;
target[2]--;
}
else if(shuitong[i]==ID[0])
{
target[0]++;
}
else if(shuitong[i]==ID[1])
{
target[1]++;
}
else if(shuitong[i]==ID[2])
{
target[2]++;
}
}
cout<<"水王為:"<<ID[0]<<endl;
cout<<"水王為:"<<ID[1]<<endl;
cout<<"水王為:"<<ID[2]<<endl;
return 0;
}
void Data(int l,int A[])
{
cout<<"請輸入符合條件的ID清單:"<<endl;
for(int i=0;i<l;i++)
{
cin>>A[i];
}
}

四、實驗截圖:
五、實驗總結
其實這道題就如同消消樂一樣,就是消掉幾個的問題。