这道题其实挺简单的,但我真是粗心大意,本来已经输入了一个元素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;
}