小灶第一次题解

编程入门 行业动态 更新时间:2024-10-28 11:32:16

<a href=https://www.elefans.com/category/jswz/34/1715265.html style=小灶第一次题解"/>

小灶第一次题解

.action?cid=66858#problem

题意大概是输入不一定多少个单词,不一定多少行,让他们左对齐而且单词之间的距离最小。

找出每一列的最大长度。。一道题卡了一天,很水虽然,但是这个点想不到我真的做不了,因为不定量,不定长,所以只能用vector做才比较好,想清楚之后,又想不出来怎么才能找到一列中最长的,看了别人的代码。


 while(getline(cin,code))
    {
        stringstream tran(code);       //创建一个“字符串流”——tran,接下来只需要像读取cin那样读取tran即可!
        while(tran>>te)
        {
            max_len[col]=max(max_len[col],(int)te.size());//比较长度取大值。
            col++;
            txt[row].push_back(te);//将每一个单词存进容器里面!
        }
        row++,col=0;
    }


每一行输入后更新每一列的长度,就是这么简单,col每次循环归零这一点很重要,也是我一直没有想到的地方。数组经常可以实现一些不断更新数据的方法做不到的事情,有时候更贴近自己的思维。

希望自己以后思维能活跃一点吧。


附上代码

#include<sstream>
#include<string>
#include<vector>
#include <cstdio>
#include <iostream>using namespace std;vector<string> txt[1314];
string code,te;int max_len[250];//将每一列中最长的单词的长度保存下来,以便保证格式!void print(string s,int len)
{//格式化输出!for(int i=0; i<s.size(); i++)cout<<s[i];for(int i=0; i<=len-s.size(); i++)cout<<' ';//cout<<'*';
}
int main()
{int col=0,row=0;//代码行数,col表示每一行的“单词”个数!while(getline(cin,code)){stringstream tran(code);//创建一个“字符串流”——tran,接下来只需要像读取cin那样读取tran即可!while(tran>>te){max_len[col]=max(max_len[col],(int)te.size());//比较长度取大值。col++;txt[row].push_back(te);//将每一个单词存进容器里面!}row++,col=0;}for(int i=0; i<row; i++){int j=0;for(; j<txt[i].size()-1; j++)print(txt[i][j],max_len[j]);cout<<txt[i][j]<<endl;//每行的最后一列是不用输出空格的!}return 0;
}

更多推荐

小灶第一次题解

本文发布于:2024-03-06 11:54:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715266.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小灶   题解

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!