Posted on 2010-01-19 19:08
Uriel 阅读(557)
评论(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;
}