UVA1593(Alignment of Code)(STL模板)

UVA1593传送门
我快被这道题给气死了。。简直垃圾。。我的输出文件尾最后少了一行被判题姬判为WA,而不是PE,搞得我傻傻的debug了近一个半钟,还去网上看了别人代码没觉得有什么问题,结果错误居然是一个换行符,但没有显示PE!!!
思路:思路比较简单,利用STL模板即可,记录每一列的最长长度然后较短的字符串右侧补空格,最后一列不用。记住:文件尾有换行符!!!
一开始的AC代码(暴力模拟,给每个字符串补齐空格)(代码略长):

#include 
#include 
#include 
#include 
#include 

using namespace std;
vector str_table[1010];
int max_size[200];

void str_charge(string&str,int len){
    for(int i = str.length();istr_table[r].size()?max_cowls:str_table[r].size();
        r++;
    }
    for(int i = 0;i=str_table[j].size()) continue;
            max_size[i] = max_size[i]>str_table[j][i].length()?max_size[i]:str_table[j][i].length();
        }
    }
    for(int i = 0;i=str_table[j].size()) continue;
            str_charge(str_table[j][i],max_size[i]);
        }
    }
    for(int i = 0;i

用sstream处理优化后的AC代码:

#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
vector str_table[1010];
int max_size[200];

int main()
{
    string s,t;
    int r = 0,c;
    while(getline(cin,s)){
        stringstream ss(s);
        c = 0;
        while(ss>>t){
            max_size[c] = max((int)t.size(),max_size[c]);
            str_table[r].push_back(t);
            c++;
        }
        r++;
    }
    for(int i = 0;i

大写的服气。。没想到被杭电oj坑过最后一行多一换行符后又被UVA坑了最后一行少一换行符。真是被坑到怀疑人生系列

你可能感兴趣的:(UVA1593(Alignment of Code)(STL模板))