小かまどの最初の問題解
18951 ワード
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66858#problem
題意は、必ずしも複数の単語を入力したり、複数の行を入力したりして、左揃えをさせたり、単語間の距離を最小限に抑えたりすることです.
各列の最大長を見つけます.の1つの問題が1日詰まって、とても水ですが、しかしこの点は私が本当にできないとは思いません.定量的ではありませんので、長いとは限らないので、vectorでやったほうがいいです.よく考えてから、どのようにして1列の中で最も長いものを見つけることができて、他の人のコードを見ましたか.
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がループごとにゼロになることが重要で、私がずっと考えていなかった場所でもあります.配列は常にデータを更新し続ける方法ではできないことを実現することができ、時には自分の考えに近いことがあります.
自分の将来の思考が少し活発になることを望んでいます.
コードを添付
題意は、必ずしも複数の単語を入力したり、複数の行を入力したりして、左揃えをさせたり、単語間の距離を最小限に抑えたりすることです.
各列の最大長を見つけます.の1つの問題が1日詰まって、とても水ですが、しかしこの点は私が本当にできないとは思いません.定量的ではありませんので、長いとは限らないので、vectorでやったほうがいいです.よく考えてから、どのようにして1列の中で最も長いものを見つけることができて、他の人のコードを見ましたか.
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;
}