P1598

  无语的是,我以为题目条件的‘在任何一行末尾不要打印不需要的多余空格’意思是每一行都只能到最后一个 '*' 出现就换行,然后用了 '\b',结果怎么都不过,于是看了题解,发现别人都没管这个 = =!!,于是我就去掉'\b',就绿了。

  下面代码就是加上判断'没有多余空格'的,去掉所有出现 space 的地方就可以了。

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < b; i++)
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
#define index(a) (a - 'A')
#define transUpp(a) (a - 32)
#define transLow(a) (a + 32)
#define ll long long
#define PB push_back
int gcd(int a, int b){return b == 0 ? a : gcd(a%b, a);}
const int N = 1000010;
int main(int n, char**v)
{
    char letter[26], s[N];
    int m = -1, spaces;
    rep(i, 0, 26) letter[i] = 0;
    for (int i = 0; i < 4; i++)
    {
        fgets(s, N, stdin);
        for (int j = 0; s[j]; j++)
            if (s[j] >= 'A' && s[j] <= 'Z')
            {
                letter[index(s[j])] += 1;
                m = max(m, letter[index(s[j])]);
            }
    }
    for(int i = m; i > 0; i--)
    {
        spaces = 0;
        rep(j, 0, 26)
        {
            if (letter[j] == i)
            {
                spaces = 0;
                letter[j] -= 1;
                cout << "* ";
            }
            else if (i > 0) cout << "  ";
            spaces += 1;
        }
        rep(j, 0, space) cout << '\b';
        cout << '\n';
    }
    rep(i, 0, 26) cout << (char)(65 + i) << ' ';
    return 0;
}

  

  

转载于:https://www.cnblogs.com/darkchii/p/9640893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值