这道题其实挺简单的,但我真是粗心大意,本来已经输入了一个元素x,又输入了一遍…… 把我整无语了……
说一下思路, 就是用数组计数法就可以了,
也要注意一下输入(我就是输入错了,整半天才发现),因为是以-1结束,所以用while()循环输入,然后去判断x!=-1这件事,在这同时,也要将x出现的次数统计出来(这部分的代码):
while(cin>>x&&x!=-1){
if(x==-1) break;//如果x=-1,那就停止循环
a[x]++;//统计x出现的次数
//统计输入的x的总个数
//因为题目说"谁的得票超过全部投票人数的半数"
//是全部投票人数,所以用一个变量n来统计这个
n++;
}
然后还有一个注意点,题目说超过总投票数的人当村长,所以在判断时,应该写>(大于),而不是>=(大于等于)。
注意点说完,贴代码:
#include <bits/stdc++.h>
using namespace std;
int x,n,a[1010],s,t,ca,cb,cc;
int main(){
while(cin>>x&&x!=-1){
if(x==-1) break;
a[x]++;
n++;
}
for(int i=1;i<=3;i++){
if(a[i]!=0){
s=s+a[i];
if(i==1){
cout<<"A="<<a[i]<<endl;
ca=a[i];
}
if(i==2){
cout<<"B="<<a[i]<<endl;
cb=a[i];
}
if(i==3){
cout<<"C="<<a[i]<<endl;
cc=a[i];
}
}
}
cout<<"Tot="<<s<<endl;
t=n/2;
if(ca>t){
cout<<"A-yes";
}else if(cb>t){
cout<<"B-yes";
}else if(cc>t){
cout<<"C-yes";
}else{
cout<<"all-NO";
}
return 0;
}