1 条题解
-
0
C++ :
#include <iostream> using namespace std; int main(){ int m,n; cin>>m>>n; string str[n+1]; for(int i=1;i<=n;i++){ cin>>str[i]; } int a[m+1];//记录投票过程,-1代表淘汰 while(true){ for(int i=1;i<=m;i++){ //重新计票,所有没有被淘汰的票数归零 if(a[i]!=-1)a[i]=0; } for(int i=1;i<=n;i++){ //计票 string s=str[i]; for(int j=0;j<s.size();j++){ char t=s[j]-'0'; if(t==0){ //如果为0 说明弃权 break; }else{ //不为0,则代表要给t投票,如果t没有被淘汰则给它投票 if(a[t]>=0){ a[t]=a[t]+1; break; } } } } int min=m+1; int max=0; for(int i=1;i<=m;i++){ if(a[i]>=0){ if(min>a[i]) min=a[i]; if(max<a[i])max=a[i]; } } if(max>min){ //最大值比最小值大,需要将所有最小值的淘汰 for(int i=1;i<=m;i++){ if(a[i]==min)a[i]=-1; } }else{ //最大值和最小值相等说明平票 int count=0; int dx=0; for(int i=1;i<=m;i++){ if(a[i]==max){ count++; dx=i; } } if(count>1){ //如果数量多,说明评选失败 cout<<0-max; }else{ cout<<dx; } break; } } cin>>m; }
- 1
信息
- ID
- 2674
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者