Posted on 2010-01-19 19:08
Uriel 閱讀(564)
評論(0) 編輯 收藏 引用 所屬分類:
POJ 、
模擬
最近期末考試。。而且成績也極其不理想。。基本沒做題。。終于只剩一門毛鄧。。
很久不做題的后果是很多東西都忘了。。所以想著先切切簡單模擬上手,后面回家再說,寒假還有個人賽,還是要認真對待的。。
沒想到簡單模擬搞了這么久。。
這題讓我想到POJ某字符統計的題。。就是說不能輸出多余空格。。因為這個WA了一次。。改了之后依然不停地WA。。最后參考了Discuss某代碼輸出部分的部分代碼。。Freopen輸出看了下發現跟sample不太一樣。。Peter后面多了空格。。抱著試試的心理Submit一下。。竟然就直接過了。。幾個小時啊。。。
我的丑陋的代碼。。

/**//*Problem: 1589 User: Uriel
Memory: 2952K Time: 16MS
Language: G++ Result: Accepted*/

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;

struct M


{
char str[1100];
}P[1100];

char res[1100][1100];
int n,col,MAXN,len;

bool cmp(M a,M b)


{
return strcmp(a.str,b.str)<0;
}

int main()


{
// freopen("out.txt","w",stdout);
int i,j,stk,k;
while(scanf("%d",&n)!=EOF)

{
memset(P,0x00,sizeof(P));
memset(res,0x00,sizeof(res));
// printf("n=%d\n",n);
getchar();
MAXN=0;
for(i=0;i<n;i++)

{
gets(P[i].str);
if(strlen(P[i].str)>MAXN)MAXN=strlen(P[i].str);
}
// printf("MAXN=%d\n",MAXN);
for(stk=1;stk<=n;stk++)

{
col=int(ceil(1.0*n/stk));
if((MAXN+2)*col<=62)break;
}
// printf("%d\n",col);
sort(P,P+n,cmp);
printf("------------------------------------------------------------\n");
for(i=0;i<stk;i++)

{
for(j=0;j<col;j++)

{
printf("%s",P[i+j*stk].str);
if(i+j*stk==n-1)

{
printf("\n");
break;
}
if(j<col-1)

{
len=strlen(P[i+j*stk].str);
len=MAXN+2-len;
for(k=0;k<len;k++)

{
printf(" ");
}
}
else
printf("\n");
}
}
}
// system("PAUSE");
return 0;
}
