• <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 閱讀(160) 評論(0)  編輯 收藏 引用 所屬分類: algorithm
            国产免费久久精品99久久| 国产精品18久久久久久vr| 亚洲成av人片不卡无码久久 | 一本色道久久88综合日韩精品| 少妇高潮惨叫久久久久久| 久久人人爽人人爽人人片AV东京热| 无码人妻久久一区二区三区| 免费观看久久精彩视频 | 国内精品人妻无码久久久影院 | 国内精品久久久久影院一蜜桃| 精品免费tv久久久久久久| 热re99久久6国产精品免费| 人妻无码精品久久亚瑟影视| 久久艹国产| 蜜臀久久99精品久久久久久| 97久久精品国产精品青草| 三级片免费观看久久| 狠狠色丁香久久综合五月| 狠狠色丁香久久婷婷综合图片| 久久婷婷久久一区二区三区| 久久久久亚洲av综合波多野结衣 | 久久国产精品成人片免费| 性高湖久久久久久久久| 亚洲精品高清一二区久久| 久久91精品综合国产首页| 一本色道久久88加勒比—综合| 精品久久一区二区三区| 久久婷婷激情综合色综合俺也去 | 久久久99精品一区二区| 超级碰碰碰碰97久久久久| 久久久久综合中文字幕| 精品久久国产一区二区三区香蕉 | 久久人人爽人人爽人人片AV高清| 久久99久久成人免费播放| 国产精品久久久久久久午夜片| 国产精品无码久久久久久| 国产婷婷成人久久Av免费高清| 久久久久久久久无码精品亚洲日韩| 精品久久亚洲中文无码| 久久男人Av资源网站无码软件 | 人妻精品久久无码专区精东影业|