#55081: C提問


roger.10.2007.tw@gmail.com (Roger Wang)


不知為何一直90%

 


// https://zerojudge.tw/ShowProblem?problemid=n130#
#include <stdio.h>
#include <string.h>

int main()
{
    int width = 0;  //寬
    int height = 0; //高
    int blank = 0;  //總空格數
    char content[300] = ""; //內容
    char frame[4000] = ""; //模板
    int scanner = 0; //當下讀的欄位
    int blankspace = 0; //前面的空格
    int contentlength = 0;//內容字數
    int spaceCOUNTER = 0;//讀到第幾個空格
    int framelength = 0;//模板大小
   
    //input
    scanf("%d %d", &height, &width);
    getchar();
    scanf("%s", content);
    getchar();
    contentlength = strlen(content);
    scanner = 0;
   
    if(height == 1)
    {
        for (int j = 0; j < width; j++)
        {
            frame[j] = getchar();
            if(frame[j] == '.')
            {
                blank++;
            }
        }
        getchar();
        frame[width] = '\n';
       
        //print
        blankspace = (blank - contentlength)/2;
        spaceCOUNTER = 0;
        for(int k = 0; k<=(width-1); k++)
        {
            if(frame[k] == '#')
            {
                putchar('#');
            }
            else if (frame[k] == '.')
            {
                spaceCOUNTER++;  //start with 1
                if (spaceCOUNTER <= blankspace)
                {
                    putchar('.');
                }
                else if (spaceCOUNTER <= blankspace + contentlength)
                {
                    putchar(content[spaceCOUNTER - blankspace -1]);
                }
                else
                {
                    putchar('.');
                }
           
            }
           
       
        }
        return 0;
    }
   
   
    blank = 0;
    scanner = 0;
    for(int i = 1; i <= height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            frame[scanner+j] = getchar();
            if(frame[scanner+j] == '.')
            {
                blank++;
            }
        }
        getchar();
        frame[scanner + width] = '\n';
        scanner = scanner + (width + 1);
    }
    frame[scanner - 1] = '\0';
    framelength = (width + 1) * height;
    //count blankspace

    blankspace = (blank - contentlength)/2;

    //print
    spaceCOUNTER = 0;
    for(int k = 0; k<=(framelength - 1); k++)
    {
        if(frame[k] == '#')
        {
            putchar('#');
        }
        else if (frame[k] == '.')
        {
            spaceCOUNTER++;  //start with 1
            if (spaceCOUNTER <= blankspace)
            {
                putchar('.');
            }
            else if (spaceCOUNTER <= blankspace + contentlength)
            {
                putchar(content[spaceCOUNTER - blankspace -1]);
            }
            else
            {
                putchar('.');
            }
           
        }
        else if (frame[k] == '\n')
        {
            putchar('\n');
        }
       
    }




   
   



    return 0;
}

 

 

 

#55085: Re: C提問


liaoweichen1024@gmail.com (M_SQRT)


不知為何一直90%

 


// https://zerojudge.tw/ShowProblem?problemid=n130#
#include
#include

int main()
{
    int width = 0;  //寬
    int height = 0; //高
    int blank = 0;  //總空格數
    char content[300] = ""; //內容
    char frame[4000] = ""; //模板
    int scanner = 0; //當下讀的欄位
    int blankspace = 0; //前面的空格
    int contentlength = 0;//內容字數
    int spaceCOUNTER = 0;//讀到第幾個空格
    int framelength = 0;//模板大小
   
    //input
    scanf("%d %d", &height, &width);
    getchar();
    scanf("%s", content);
    getchar();
    contentlength = strlen(content);
    scanner = 0;
   
    if(height == 1)
    {
        for (int j = 0; j < width; j++)
        {
            frame[j] = getchar();
            if(frame[j] == '.')
            {
                blank++;
            }
        }
        getchar();
        frame[width] = '\n';
       
        //print
        blankspace = (blank - contentlength)/2;
        spaceCOUNTER = 0;
        for(int k = 0; k<=(width-1); k++)
        {
            if(frame[k] == '#')
            {
                putchar('#');
            }
            else if (frame[k] == '.')
            {
                spaceCOUNTER++;  //start with 1
                if (spaceCOUNTER <= blankspace)
                {
                    putchar('.');
                }
                else if (spaceCOUNTER <= blankspace + contentlength)
                {
                    putchar(content[spaceCOUNTER - blankspace -1]);
                }
                else
                {
                    putchar('.');
                }
           
            }
           
       
        }
        return 0;
    }
   
   
    blank = 0;
    scanner = 0;
    for(int i = 1; i <= height; i++)
    {
        for (int j = 0; j < width; j++)
        {
            frame[scanner+j] = getchar();
            if(frame[scanner+j] == '.')
            {
                blank++;
            }
        }
        getchar();
        frame[scanner + width] = '\n';
        scanner = scanner + (width + 1);
    }
    frame[scanner - 1] = '\0';
    framelength = (width + 1) * height;
    //count blankspace

    blankspace = (blank - contentlength)/2;

    //print
    spaceCOUNTER = 0;
    for(int k = 0; k<=(framelength - 1); k++)
    {
        if(frame[k] == '#')
        {
            putchar('#');
        }
        else if (frame[k] == '.')
        {
            spaceCOUNTER++;  //start with 1
            if (spaceCOUNTER <= blankspace)
            {
                putchar('.');
            }
            else if (spaceCOUNTER <= blankspace + contentlength)
            {
                putchar(content[spaceCOUNTER - blankspace -1]);
            }
            else
            {
                putchar('.');
            }
           
        }
        else if (frame[k] == '\n')
        {
            putchar('\n');
        }
       
    }




   
   



    return 0;
}

 

 

 


這兩筆測資的客戶指定文字是空字串喔