[Solution][Simulate]JLOI2011 小A的烦恼

[目的]

实话讲,完全是为了学习模拟这个单词才来写这个题解。。。
再则是为了初学者们对SB模拟感到头痛提供标程。。。

[题目]

戳这里

[题意]

三次元世界中的csv文件合并。

[思路]

模拟。

[代码]

#include<cstdio>
#include<cstring>
char s[101] , text[101][12001];
int numl[101] , length[101];
int main()
{
    int T;
    scanf("%d" , &T);
    register int i , j , k , len;
    int real_max = -1 , n;
    for(i = 1 ; i <= T ; ++i)
    {
        scanf("%d%s" , &n , s);
        if (n > real_max)
            real_max = n;
        sprintf(text[0] + length[0] , "%s," , s);
        length[0] += strlen(s) + 1;
        ++numl[0];
        for(j = 1 ; j <= n ; ++j)
        {
            scanf("%s" , s);
            len = strlen(s);
            int num = 0;
            for(k = 0 ; k < len ; ++k)
            {
                if (s[k] == ',')
                    ++num;
            }
            numl[j] += num + 1;
            sprintf(text[j] + length[j] , "%s," , s);
            length[j] += len + 1;
        }
        int maxnum = -1;
        for(j = 0 ; j <= 100 ; ++j)
        {
            if (numl[j] > maxnum)
                maxnum = numl[j];
        }
        for(j = 0 ; j <= 100 ; ++j)
        {
            for(k = 1 ; k <= maxnum - numl[j] ; ++k)
                sprintf(text[j] + length[j]++ , ",");
            numl[j] = maxnum;
        }
    }
    for(i = 0 ; i <= real_max ; ++i)
    {
        for(j = 0 ; j < length[i] - 1 ; ++j)
            putchar(text[i][j]);
        puts("");
    }
    return 0;
}

comments powered by Disqus