热门标签 | 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;
}


推荐阅读
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 丽江客栈选择问题
    本文介绍了一道经典的算法题,题目涉及在丽江河边的n家特色客栈中选择住宿方案。两位游客希望住在色调相同的两家客栈,并在晚上选择一家最低消费不超过p元的咖啡店小聚。我们将详细探讨如何计算满足条件的住宿方案总数。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文深入探讨了POJ2762问题,旨在通过强连通分量缩点和单向连通性的判断方法,解决有向图中任意两点之间的可达性问题。文章详细介绍了算法原理、实现步骤,并附带完整的代码示例。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
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社区 版权所有