额,不知道写啥。 2023-05-17 20:54 采纳率: 83.3%
浏览 11
已结题

投票统计2c++assd

又到了大队长选举的大日子,班主任决定用使用新的规则进行投票;只有获得连续票数最高的同学,才能成为大队长。如果有两个或者以上的同学连续得票一样,先获得连续最多票的人当选;

总共有n个同学进行投票,参加选举的同学每人用一个大写英文字母作为代号,投票过程记录为一串字符。

班主任和同学们都想一秒钟知道谁是大队长,请你编程统计出答案!
该怎么写?

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-05-17 21:09
    关注

    参考GPT和自己的思路:这个问题可以使用C++语言编写一个程序来解决。具体思路是设置一个计数器,用于记录当前同学的连续得票数,以及一个变量,用于记录当前最高的连续得票数。然后遍历投票结果字符串,如果当前字符与前一个字符相同,则计数器加1;否则,比较计数器和当前最高得票数的大小,如果更高,则更新最高得票数和获得最高得票的同学代号。最后返回获得最高得票的同学代号即可。

    下面是一份可能的代码示例:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        int n;
        cin >> n; // 输入参选同学数
    
        string votes;
        cin >> votes; // 输入投票结果字符串
    
        char maxCandidate = votes[0]; // 当前得票最高的同学代号
        int maxVotes = 1; // 当前最高连续得票数
        int currentVotes = 1; // 当前同学的连续得票数
    
        for (int i = 1; i < n; i++) {
            if (votes[i] == votes[i-1]) {
                currentVotes++;
            } else {
                if (currentVotes >= maxVotes) {
                    maxVotes = currentVotes;
                    maxCandidate = votes[i-1];
                }
                currentVotes = 1;
            }
        }
    
        if (currentVotes >= maxVotes) {
            maxVotes = currentVotes;
            maxCandidate = votes[n-1];
        }
    
        cout << maxCandidate << endl; // 输出获得最高连续得票的同学代号
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月17日

悬赏问题

  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中