天天看點

找水王

(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];
     
       }

}      
找水王

四、實驗截圖:

找水王

五、實驗總結

其實這道題就如同消消樂一樣,就是消掉幾個的問題。