程序设计思维与实践 第一周月模拟题 csp201512-3 画图

博客详细介绍了CSP题库中的画图问题,将其与迷宫问题类比,提出问题解决分为画迷宫和字符填充两步。通过DFS和BFS搜索算法在二维数组中进行操作,用BFS填充字符,并提供了关键函数的实现细节,强调认真阅读题目和问题分解的重要性。
摘要由CSDN通过智能技术生成

csp题库201512-3 画图

题目:在这里插入图片描述
在这里插入图片描述

题目思路:

在认真阅读题目之后,这个题目与我们之前练习过得搜索(DFS,BFS)时的迷宫问题很相似,迷宫问题是,在一个二维数组中,界定好了迷宫,让我们在迷宫内部中通过DFS,BFS的搜索来进行行走,获取一些相关的答案,这个问题是给我们界定好了一张画板。然后让我们先在画板上进行画迷宫的操作和用字符填充迷宫内部的操作那么我们很显然可以大致地将这个题目分为两个部分进行操作:1:画迷宫。2:填充字符。画好迷宫后,我们就可以在迷宫内部,利用搜索的相关算法(DFS,BFS)来遍历迷宫的内部,进而使用字符进行填充。
相关的细节实现,关于数据的储存,一个字符类型的二维数组ans用于存储答案,所有的函数都是为了操作这个二维数组ans用于获得答案,一个二维数组vis用于在BFS时关于某个点是否到达的判断。具体的实现是这样的几个函数,第一个函数lianxian用于画出边界,需要注意的细节是,横竖交接时的判定以及画线时注意调整画线的方向。第二个函数tianchnog用BFS在边界内进行填充,需要注意的是当前点能够被填充的条件,并不是当前点是小数点,而应该在每次填充时重新初始化vis数组,条件是没有到达,且在边界内。一个函数output用于输出结果数组,注意的是纵坐标应该从上往下输出。然后主函数不断地填充,画线,最后输出即可。

代码实现:

#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

struct node
{
   
 int x;
 int y;
};

char ans[110][110];
bool vis[110][110];
int n,m,q; 
int i,j,k;
int lable;
int a1,b1,a2,b2;
int a0,b0;
char c0;

void lianxian(int x1,int y1,int x2,int y2)//连线
{
   
    if(x1 == x2)
 {
   
        if(y1 > y2)
  {
   
   swap(y1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值