UVA1593玄学WA求救大佬!!!
  • 板块题目总版
  • 楼主xibaohe
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/2/22 19:29
  • 上次更新2023/10/24 00:05:47
查看原帖
UVA1593玄学WA求救大佬!!!
601747
xibaohe楼主2023/2/22 19:29

蒟蒻在别的刷题网站上面过了,听题解区说UVA题行末不能有多余空格,但蒟蒻自以为自己的代码可以不输出行末空格,但还是WA,求救大佬!(帮助必关)


#include<iostream>
using namespace std;

string s, a[1005][185]; //a[i][j]表示第i行第j个单词
int n, maxlen[185], cnt[1005];
//maxlen[j]表示每行第j个单词的最大长度
//cnt[i]表示第i行的单词个数

int main()
{
    //第一步:输入第i行,并取出第j个单词,存入a[i][j]中
    while(getline(cin, s))
    {
        n++; //每读入一行,行数+1
        int last = 0, len = s.size();
        //last表示上一个单词起点的下标
        for(int i = 0; i < len; i++)
            if(s[i] == ' ')
            {
                a[n][++cnt[n]] = s.substr(last, i - last);
                last = i + 1;
            }
        a[n][++cnt[n]] = s.substr(last);
    }

    //第二步:求出每一行第j个单词的最大长度maxlen[j]
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= cnt[i]; j++)
            maxlen[j] = max(maxlen[j], (int)a[i][j].size());

    //第三步:输出第i行第j个单词,并补上maxlen[j]-a[i][j].size()+1个空格
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= cnt[i]-1; j++)
        {
            cout << a[i][j];
            for(int k = 1; k <= maxlen[j]-a[i][j].size()+1; k++)
            cout << " ";
        }
        cout<<a[i][cnt[i]];
        cout << '\n';
    }
    return 0;
}
2023/2/22 19:29
加载中...