找水王

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

}
复制代码
 
四、实验截图:

 

五、实验总结

其实这道题就如同消消乐一样,就是消掉几个的问题。

原文地址:https://www.cnblogs.com/1305yyf/p/4593341.html