• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            f(sixleaves) = sixleaves

            重劍無鋒 大巧不工

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              95 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
            題目其實很簡單,答題意思就是從管道讀取一組文件名,并且按照字典序排列,但是輸入的時候按列先輸出,再輸出行。而且每一行最多60個字符。而每個文件名所占的寬度為最大文件名的長度加2,除了輸出在最右邊的文件名的寬度是最大文件名長度之外。編程實現這個功能,這就是Unix系統下ls命令的一部分而已。具體實現如下。
            主要學習的技能要點就是如何用偏移位移法來按列輸出。如果一個矩陣n行m列,要按照列輸出。但是我們知道,編程時候,只能是for(行)在列。所以必須要有一個偏移量來計算這種偏移關系。x = rows * c + r;

             1 #include <iostream>
             2 #include <string>
             3 #include <algorithm>
             4 #include <vector>
             5 #include <cmath>
             6 
             7 using namespace std;
             8 
             9 vector<string> words;
            10 void print(const string &s, int len, char extra);
            11 int main() {
            12     
            13     
            14     int n;
            15     string w;
            16     
            17     while (cin >> n) {
            18         
            19         int max = 0;
            20         words.clear();
            21         for (int i = 0; i < n; i++) {
            22             cin >> w;
            23             string::size_type str_size = w.size();
            24             if (str_size > max) max = str_size;
            25             words.push_back(w);
            26         }
            27         int cols = (60 - max) / (max + 2) + 1;
            28         int rows = ceil(double(n) / cols);
            29         sort(words.begin(), words.end());
            30         print("", 60, '-');
            31         cout << endl;
            32         for(int r = 0; r < rows; r++) {
            33             
            34             for (int c = 0; c < cols; c++) {
            35                 
            36                 int idx = c * rows + r;
            37                 if (idx < n) print(words[idx],(c == cols - 1? max: max + 2), ' ');
            38                 
            39             }
            40             
            41             cout << endl;
            42             
            43         }
            44         
            45         
            46     }
            47     
            48     return 0;
            49     
            50 }
            51 
            52 void print(const string &s, int len, char extra) {
            53     
            54     cout << s;
            55     string::size_type str_size = s.size();
            56     for (int i = 0; i < len - str_size; i++) {
            57         cout << extra;
            58     }
            59 }
            posted on 2015-03-25 14:32 swp 閱讀(171) 評論(0)  編輯 收藏 引用 所屬分類: algorithm
            成人国内精品久久久久影院| 欧美日韩中文字幕久久伊人| 狠狠综合久久综合88亚洲| 久久午夜夜伦鲁鲁片免费无码影视| 久久精品国产2020| 国产综合成人久久大片91| 国内精品久久久久久久久电影网| 国产成人久久精品激情| 久久人人爽人人澡人人高潮AV | 日韩一区二区久久久久久| 久久人人爽人人精品视频| 久久久久国产一级毛片高清版| 一级a性色生活片久久无| 99久久免费只有精品国产| 久久精品中文騷妇女内射| 久久久久久久久66精品片| 精品久久久久久无码免费| 久久精品国产网红主播| 久久久久免费精品国产| 亚洲精品99久久久久中文字幕| 久久久精品2019免费观看| 日产精品久久久久久久| 日韩亚洲国产综合久久久| 精品视频久久久久| 国产精品狼人久久久久影院| 97久久精品无码一区二区| 久久青青草原精品国产| 久久人妻少妇嫩草AV蜜桃| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久综合丁香激情久久| 久久精品国产亚洲AV无码娇色| 77777亚洲午夜久久多喷| 97香蕉久久夜色精品国产| 久久这里的只有是精品23| 久久福利资源国产精品999| 久久这里只有精品视频99| 亚洲国产成人精品91久久久 | 国产精品久久久久久吹潮| 狠狠色丁香久久婷婷综合五月| av无码久久久久不卡免费网站| 精品熟女少妇av免费久久|