找水王
要求:一个变量计数a>n/2,n ,n/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;
}
截图:
总结:学会如何使用栈