/*-----------------------------------------------------*/
/*參考程式競賽與演算法入門經典P.5-32內容 */
/*-----------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int max_col = 60; //最大行數
const int maxn = 105; //檔案名稱最大長度
string filenames[maxn];
int main(){
freopen("input.txt", "r", stdin);
int n=0;
while(cin >> n){
int M = 0; //檔案名稱最長長度
for(int i=0;i<n;i++){
cin >> filenames[i];
if((int)filenames[i].length()>M) M = filenames[i].length();
}
sort(filenames, filenames+n); //sort
for(int i=0;i<60;i++)printf("-");
printf("\n");
//行數=最大行數減最大檔名,除上最大檔名加2(得到除最後一行的行數)
//再把最後一行加回來的數即是
int cols = (max_col-M)/(M+2) + 1;
int rows = n/cols;
if(n%cols==0); else rows++; //無條件進位
int flag;
for(int r=0;r<rows;r++){
for(int c=0;c<cols;c++){
flag = c*rows+r; //直接計算出位置
if(flag < n)cout << filenames[flag];
for(int i=0; i<M-(int)filenames[flag].length() ;i++)cout << " ";
cout << " ";
}
cout << "\n";
}
}
return 0;
}
2014年12月8日星期一
[UVa] 400 - Unixls
奇怪的是,題目說最右邊欄的寬度是最大檔名長,但輸出時卻都要+2才會過...
訂閱:
發佈留言 (Atom)
-
因為先前寫UVa時,檔案名稱有時會花心思改,有時就直接把題目名稱加上.cpp就貼上了 導致現在有不同的格式出現 現在要處理的事情很簡單 1. 去除空白 2. 將底線 ( _ ) 換成dash ( - ) 經過一番查詢,終於發現最簡單的方法 - re...
-
文章出處: http://infbugs.blogspot.tw/2011/12/c_20.html 謝謝沙耶,解答了我長久以來對於 input/output 的疑惑。 C 語言入門 - 在線上批改系統練功 如何練習使用基本語法 自己出個練習題試著寫...
-
因為X205的架構非常獨特,Linux對其硬體的支援度非常弱(據說kernel4.0之後有所改善,這倒還需要研究一番),目前的進度是將Ubuntu系統塞進32Gb的固態碟中,並設定能自動抓取開機磁區,之後可能還要針對WIFI、音效、快捷鍵和讀卡機等週邊設備進行設定。 1...
沒有留言:
發佈留言