zoukankan      html  css  js  c++  java
  • 第六届CCF计算机职业资格认证考试题解(第三题)(画图)

    之前在CSDN上看到别人的代码,跑了下,发现官方给的第一个测例是过不去的,但是提交上去之后是100分,猜测是判题系统中并没有使用题目中给的第一个测例。

    另,之前自己写的代码是零分,后来发现是字符之间多输出了空格,以后还是要认真看题。

    最后改了之后,是90分,后来经人指正,是没有考虑到划线时遇到'+'时的情况,不论是画'|'还是'-',遇到'+'时仍旧要保持'+'号.

    原文:http://blog.csdn.net/jaster_wisdom/article/details/51059144

    一下是修改之后的代码,可以跑过所有测例。

    #include <stdio.h>
    #include <stdlib.h>

    int n,m,q;
    int do1_x,do1_y;
    char do1_c;
    int do0_x1,do0_x2,do0_y1,do0_y2;
    char flag[100][100];

    int draw1(int x,int y,char c)
    {
    if(x < 0 || x >= n)
    {
    return 0;
    }
    if(y < 0 || y >= m)
    {
    return 0;
    }
    if(flag[x][y] == '+' || flag[x][y] == '-' || flag[x][y] == '|')
    {
    return 0;
    }
    else if(flag[x][y] == c)
    {
    return 0;
    }
    else
    {
    flag[x][y] = c;
    draw1(x+1,y,c);
    draw1(x-1,y,c);
    draw1(x,y+1,c);
    draw1(x,y-1,c);
    }
    return 0;
    }

    int draw0(int x1,int y1,int x2,int y2)
    {
    int t;
    int i;
    if(x1 == x2)
    {
    if(y1 > y2)
    {
    t = y2;
    y2 = y1;
    y1 = t;
    }
    for(i = y1;i <= y2; i++)
    {
    if(flag[x1][i] == '|')
    {
    flag[x1][i] = '+';
    }
    else if(flag[x1][i] == '+')
    {
    continue;
    }
    else
    {
    flag[x1][i] = '-';
    }
    }

    }
    else if(y1 == y2)
    {
    if(x1 > x2)
    {
    t = x2;
    x2 = x1;
    x1 = t;
    }
    for(i = x1;i <= x2;i++)
    {


    if(flag[i][y1] == '-')
    {
    flag[i][y1] = '+';
    }
    else if(flag[i][y1] == '+')
    {
    continue;
    }
    else
    {
    flag[i][y1] = '|';
    }
    }
    }
    else
    {
    printf("Error:x1 != x2 && y1 != y2 ");
    }
    return 0;
    }

    int initial()
    {
    int i,j;
    for(i=0;i<100;i++)
    {
    for(j=0;j<100;j++)
    {
    flag[i][j] = '.';
    }
    }
    return 0;
    }

    int read_draw()
    {
    int i;
    int mark;
    scanf("%d %d %d",&m,&n,&q);
    for(i=0;i<q;i++)
    {
    scanf("%d",&mark);
    if(mark == 1)
    {
    scanf("%d %d %c",&do1_y,&do1_x,&do1_c);
    draw1(do1_x,do1_y,do1_c);
    }
    else
    {
    scanf("%d %d %d %d",&do0_y1,&do0_x1,&do0_y2,&do0_x2);
    draw0(do0_x1,do0_y1,do0_x2,do0_y2);
    }
    }
    return 0;
    }

    int pri()
    {
    int i,j;
    for(i=n-1;i>=0;i--)
    {
    if(i != (n-1))
    {
    printf(" ");
    }
    for(j=0;j<m;j++)
    {
    printf("%c",flag[i][j]);
    }
    }
    return 0;
    }

    int main()
    {
    initial();
    read_draw();
    pri();
    return 0;
    }

  • 相关阅读:
    WebRTC之完整搭建Jitsi Meet指南
    使用Jibri进行Jitsi Meet视频录制
    完整开源免费视频会议Jitsi-meet安装教程
    iOS聊天起泡(背景图片被拉伸不变形)----转载--待验证
    技术人对赚钱的思考与摸索
    模板引擎的思考
    SpringBoot单文件与多文件上传
    数据库被删之反思
    分布式配置中心之思考
    正版office产品密钥-激活码
  • 原文地址:https://www.cnblogs.com/vipwtl/p/5366992.html
Copyright © 2011-2022 走看看