要求:一個變量計數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;
截圖:

總結:學會如何使用棧