Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594

POJ 1589 Unix ls---简单模拟

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




只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理