题解:这是洛谷的第20道题目,本题的难点不在于字符的统计,而是星号字符的打印。
注意
1 . 我们可以这样来,假设我们已经做完了字符的统计。
2 . 按行输出:因为最终输出的都是最后一行平齐,所以我们可以在字符统计中得到出现次数最多的字符和出现的次数N,遍历A到Z,哪个字符能出现N次,打印“*”;接着,再遍历A到Z,哪个字符出现了的次数大于等于N-1,输出“*”。直到N==0。
源代码:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <sstream>
#include <stdlib.h>
using namespace std;
#define SIZE 26
void add(const string str, int *number)
{
for (size_t i = 0; i < str.size(); i++)
{
switch (str[i])
{
case 'A': number[0]++; break;
case 'B': number[1]++; break;
case 'C': number[2]++; break;
case 'D': number[3]++; break;
case 'E': number[4]++; break;
case 'F'