zoukankan      html  css  js  c++  java
  • 【例题5-8 UVA

    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    设n个字符串中出现的最长的为len; 最后一列能容纳len个字符,然后前面的列能容纳len+2个字符。 每行最多60个字符。 按照这样的排版,按照字典序,按列输出每个字符串。

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 100;
    const int M = 60;
    
    int n,len;
    string s[N + 10 ];
    
    void fil(int num, int used ,char key)
    {
    	for (int i = 0; i < num-used; i++)
    		putchar(key);
    }
    
    int main()
    {
    	//freopen("F:\rush.txt", "r", stdin);
    	//ios::sync_with_stdio(0), cin.tie(0);
    	while (cin >> n)
    	{
    		len = 0;
    		for (int i = 0; i < n; i++)
    		{
    			cin >> s[i];
    			len = max(len, (int)s[i].size());
    		}
    		int col = (M - len) / (len + 2) + 1;
    		int row = (n - 1) / col + 1;
    		sort(s, s + n);
    		fil(M,0, '-'); puts("");
    		for (int i = 0, num; i < row; i++)
    		{
    			for (int j = 0; j < col; j++)
    			{
    				int x = j*row + i;
    				if (x > n - 1) break;
    				cout << s[x];
    				fil(j == col - 1 ? len : len + 2, (int)s[x].size(), ' ');
    			}
    			puts("");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    结构化系统开发和面向对象开发方法
    十五周总结
    第十四周总结
    第十三周总结
    分答
    第十周总结
    DFD
    判定表
    第八周总结
    开发方法对比
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7661880.html
Copyright © 2011-2022 走看看