怎么看这道题都是理解比实现难
特别是英语版,最后如何输出被绕进去了
大概意思就是在保证每行不超过60字符的情况下,尽可能让行数最少输出。
注意三目运算符的运算优先度,记得加括号
#include <cstdio> #include <string> #include <cstring> #include <iostream> #include <vector> #include <algorithm> using namespace std; class LOVE{ private: static const int len=65; static const int maxn=105; public: bool Do(){ int n,Max=0; if(!(cin>>n)) return false; cout<<"------------------------------------------------------------\n"; string str[maxn]; for(int i=0;i<n;i++){ cin>>str[i]; Max=max(Max,(int)str[i].size()); } sort(str,str+n); int L,H; for(int i=n;i>0;i--){ L=i; H=n/L+(n%L?1:0); int size=Max*L+2*(L-1); if(size<=60)break; } //cout<<"\n"<<L<<" "<<H<<"\n"; for(int i=0;i<H;i++){ for(int j=0;j<L;j++){ cout<<str[i+j*H]; for(int k=0;k<(j==L-1?0:2)+Max-(int)str[i+j*H].size();k++) cout<<" "; } cout<<"\n"; } return true; } }; int main(){ //freopen("in.txt","r",stdin); std::ios::sync_with_stdio(false); LOVE LIVE; while(LIVE.Do()); return 0; }