热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20151203画图

BFS深搜hashtable来判断是横线还是竖线但是为啥还是90分啊呜呜!找不到原因#define_CRT_SECURE_NO_WARNINGS1#include

在这里插入图片描述

BFS深搜+hashtable来判断是横线还是竖线
但是为啥还是90分啊呜呜!找不到原因

#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n, q, m;
int op;//操作
const int maxn = 110;
char pic[maxn][maxn];//画布
int hashtable[maxn][maxn];//=0表示没有画线//==1表示画横线,=2表示画竖线=3表示画十字
int inq[maxn][maxn];
int X[4] = { 0,0,1,-1 };
int Y[4] = { 1,-1,0,0 };
struct node {int x;int y;
}Node;
int judge(int x, int y)//检测(x,y)是否合法
{if (x >&#61; m || x < 0 || y >&#61; n || y < 0) return 0;//越界if (hashtable[y][x] !&#61; 0 || inq[y][x] &#61;&#61; 1) return 0;//已经被画线了或者已经入过队了return 1;
}
void BFS(int x,int y,char c)
{queue<node> Q;Node.x &#61; x; Node.y &#61; y;Q.push(Node);inq[y][x] &#61; 1;//记录为入队pic[y][x] &#61; c;while (!Q.empty()){node top &#61; Q.front();Q.pop();for (int i &#61; 0; i < 4; i&#43;&#43;){int newX &#61; top.x &#43; X[i];int newY &#61; top.y &#43; Y[i];if (judge(newX, newY)){Node.x &#61; newX;Node.y &#61; newY;Q.push(Node);inq[newY][newX] &#61; 1;pic[newY][newX] &#61; c;}}}
}
int main() {scanf("%d %d %d",&m,&n,&q);//一共m列n行getchar();//初始化画布&#xff1a;for (int y &#61; 0; y < n; y&#43;&#43;){for (int x &#61; 0; x < m; x&#43;&#43;){pic[y][x] &#61; &#39;.&#39;;}}//初始化hashtablefill(hashtable[0],hashtable[0]&#43;maxn*maxn,0);for (int i &#61; 0; i < q; i&#43;&#43;){scanf("%d",&op);if (op&#61;&#61;1)//填充操作{//使用BFS进行广度优先搜索填充//每次填充字符的时候都要初始化inqfill(inq[0],inq[0]&#43;maxn*maxn,0);int x, y;char c[3];scanf("%d %d %s", &x, &y, c);BFS(x,y,c[0]);}else//画线段操作{int x1, y1, x2, y2;scanf("%d %d %d %d",&x1,&y1,&x2,&y2); if (x1 &#61;&#61; x2)//表示画竖线{if (y1 > y2)swap(y1,y2);for (int y &#61; y1; y <&#61; y2; y&#43;&#43;){if(hashtable[y][x1]&#61;&#61;0)hashtable[y][x1] &#61; 2;elsehashtable[y][x1] &#61; 3;}}else//表示画横线{if (x1 > x2)swap(x1,x2);for (int x &#61; x1; x <&#61; x2; x&#43;&#43;){if (hashtable[y1][x] &#61;&#61; 0)hashtable[y1][x] &#61; 1;elsehashtable[y1][x] &#61; 3;}}}}//现在把画线段的操作放进pic中for (int y &#61; 0; y < n; y&#43;&#43;){for (int x &#61; 0; x < m; x&#43;&#43;){if (hashtable[y][x] &#61;&#61; 1)//说明画横线pic[y][x] &#61; &#39;-&#39;;else if (hashtable[y][x] &#61;&#61; 2)pic[y][x] &#61; &#39;|&#39;;//画竖线else if (hashtable[y][x] &#61;&#61; 3)//画十字架pic[y][x] &#61; &#39;&#43;&#39;;else;}}for (int y &#61; n-1; y>&#61;0;y--){for (int x &#61; 0; x < m; x&#43;&#43;){printf("%c", pic[y][x]);}printf("\n");}return 0;
}


推荐阅读
  • 本文介绍了一道来自《紫书》的编程题目——UVa11212 编辑书稿。该问题通过迭代加深搜索(IDA*)算法解决,旨在找到将给定排列转换为升序排列所需的最少步骤。文章提供了详细的解题思路和代码实现。 ... [详细]
  • 在该问题中,若存在一个节点x满足特定条件,则x所在的强连通分量(SCC)同样满足条件。合法的SCC数量最多为1,因为多个SCC之间具有传递性,理论上应能合并。本文将通过拓扑排序和缩点技术来探讨这一算法的实现。 ... [详细]
  • 前文|功能型_品读鸿蒙HDF架构
    前文|功能型_品读鸿蒙HDF架构 ... [详细]
  • 本文探讨了C++编程语言中声明与定义的区别,以及如何通过内部连接和外部连接来组织源文件,确保代码的正确链接与编译。文章详细解析了不同类型、变量、函数以及类的连接属性,并提供了实用的示例。 ... [详细]
  • 辗转相减法在求解最大等比值问题中的应用
    本文探讨了如何利用辗转相减法解决X星球大奖赛中奖金分配的数学问题,通过分析给定的数据点,计算出可能的最大等比值。 ... [详细]
  • http:acm.hdu.edu.cnshowproblem.php?pid1846好几天没出题了,今天终于水了一题巴什博弈题。总结:【一】巴什博弈对象:一堆石子(可延伸 ... [详细]
  • 本文详细探讨了C++中赋值运算符重载函数(operator=)的使用方法和注意事项,结合实例分析了其参数、返回值、调用时机等关键点,并讨论了浅拷贝和深拷贝的区别及其重要性。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 本章探讨了使用固定数组实现栈和队列的基本方法,以及如何通过这些基本结构来实现更复杂的操作,如获取栈中的最小值。此外,还介绍了如何利用栈来模拟队列的行为,反之亦然。 ... [详细]
  • 探讨 != 运算符在C++中的重写候选条件,分析标准文档中的相关规定及其应用。 ... [详细]
  • 利用R语言进行股票价格数据的线性回归分析
    本文介绍了如何使用R语言对Excel中的股票价格数据集执行线性回归分析。通过具体的代码示例,展示了数据的导入、处理及模型构建的过程。 ... [详细]
  • 本文探讨了C++中如何正确使用+运算符来处理字符串和数字的拼接问题,分析了为何某些操作有效而另一些则会引发编译错误。 ... [详细]
  • 地球坐标、火星坐标及百度坐标间的转换算法 C# 实现
    本文介绍了WGS84坐标系统及其精度改进历程,探讨了火星坐标系统的安全性和应用背景,并详细解析了火星坐标与百度坐标之间的转换算法,提供了C#语言的实现代码。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
author-avatar
mobiledu2502855247
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有