• <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
            国产麻豆精品久久一二三| 亚洲欧美一区二区三区久久| 久久久久久久免费视频| 性高湖久久久久久久久AAAAA| 久久久精品人妻无码专区不卡 | 青青草原综合久久大伊人导航| 久久久久噜噜噜亚洲熟女综合| 精品伊人久久大线蕉色首页| 久久精品毛片免费观看| 久久久久国产成人精品亚洲午夜| 色青青草原桃花久久综合| 伊人久久大香线蕉av一区| 亚洲国产精品嫩草影院久久 | 国产精品一区二区久久精品无码 | 国产精品九九久久免费视频 | 日韩一区二区久久久久久| 久久精品人妻中文系列| 国产精品一区二区久久| 亚洲狠狠婷婷综合久久蜜芽| 日日狠狠久久偷偷色综合免费| 久久久无码精品亚洲日韩蜜臀浪潮 | 色综合色天天久久婷婷基地| 精品伊人久久大线蕉色首页| 精品免费久久久久国产一区| 韩国无遮挡三级久久| 99久久国产宗和精品1上映| 一级做a爰片久久毛片人呢| 精品久久久久久| 亚洲午夜久久久影院伊人| 四虎亚洲国产成人久久精品| 91精品国产91久久| 久久精品一区二区| 久久久91精品国产一区二区三区| 亚洲精品高清国产一线久久| 香蕉久久久久久狠狠色| 亚洲国产成人精品女人久久久 | 亚洲一区二区三区日本久久九| 日韩人妻无码一区二区三区久久 | 国产高清国内精品福利99久久| 99久久人妻无码精品系列| 婷婷五月深深久久精品|