找水王

要求:一个变量计数a>n/2n/2,参数赋值,复杂度为n

思路:遍历统计数目,因为每个帖子都有它的id,找其中的一个帖子,记录它的全部id,并与其他帖子id进行比较,如果id相同,然后累加进行计数,当遍历全部进行完毕,则将最后的计数与n/2进行比较,如果不大于n/2,归零,如果大于n/2,则记录下棋id

代码:

#include<iostream>

#define MAXSIZE 100

#define OK 1

#define OVERFLOW -2

using namespace std;

typedef struct {    

int *base;    

int *top;    

int stacksize;

}SqStack; i

nt  InitStack(SqStack &S) {   

S.base=new int [MAXSIZE];   

if(!S.base) exit(OVERFLOW);   

S.top=S.base;   

S.stacksize=MAXSIZE;    

return OK;

}

int main() {    

int ID[MAXSIZE],k=0,n;  

cout<<"请输入所有的ID号:(以-1结束)"<<endl;    

for(int j=0;;j++)     {           

          cin>>n;  

         if(n==-1)             break;            

         ID[j]=n;         k++;    

    }    

   int e;    

  SqStack S;    

InitStack(S);

for(int i=0;i<k;i++)     {                

     if(S.top==S.base)         {            

            *S.top++=ID[i];        

                                         }        

     int num=*(S.top-1);        

     if(num!=ID[i+1]&&i<k-1)         {            

                     e=*--S.top;            

                       i++;         }        

        else         {        

            *S.top++=ID[i+1];        

              }        

      if(i==k-2)         {           

           num=*(S.top-1);            

         cout<<"水王的Id号为:"<<endl;            

         cout<<num<<endl;        

                 }    

              }    

     return 0;

}

截图:

总结:学会如何使用栈

原文地址:https://www.cnblogs.com/mingning/p/4569273.html