UVA 1593 代码补全 为什么超时

C++语言 码拜 8年前 (2016-05-28) 699次浏览
UVA 1593 代码补全 为什么超时

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
#include <string>
#include <sstream>
#include <vector>
#include <map>
using namespace std;
int main()
{
    //freopen("c:\h.txt","w",stdout);
    vector<string> s;
    int line=0,wide[100]={};
    string::size_type a[1005]={};
    string t;
    while(getline(cin,t))
    {
        string m;
        stringstream ss(t);
        int j=0;
        while(ss>>m)
        {
            a[j]=max(a[j],m.length());  //找到每列最长的单词
            j++;
            wide[line]++;               //记录每行有几个单词
            s.push_back(m);             //把每个单词放到vector里
        }
        line++;
    }
    for(string::size_type m=0,line=0,count=0;m!=s.size();m++)
    {
            cout<<s[m];
        for(string::size_type i=0;i!=a[count]-s[m].length()+1&&count!=wide[line]-1;i++)
            cout<<" ";                  //每次补 当前列最长的单词长度-当前单词长度+1 个空格,最后一个单词则不补空格
            count++;
            if(count==wide[line])
            {
                cout<<endl;
                count=0;
                line++;
            }
    }
    return 0;
}
解决方案

40

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UVA 1593 代码补全 为什么超时
喜欢 (0)
[1034331897@qq.com]
分享 (0)