next

2019年第十届蓝桥杯C/C++程序设计本科B组省赛 E迷宫

不想你离开。 提交于 2020-12-01 08:28:38
试题 E: 迷宫 本题总分: 15 分 【问题描述】 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫( 30 行 50 列) ,请找出一种通过迷宫的方式, 其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。 请注意在字典序中D <L<R< U。(如果你把以下文字复制到文本文件中,请务 必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 maze.txt, 内容与下面的文本相同) 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001100110100101 01111011010010001000001101001011100011000000010000 01000000001010100011010000101000001010101011001011

JavaScript异步

不羁的心 提交于 2020-12-01 01:49:57
JavaScript异步类型 延迟类型:setTimeout、setInterval、setImmediate 监听事件:监听 new Image 加载状态、监听 script 加载状态、监听 iframe 加载状态、Message 带有异步功能类型: Promise、ajax、Worker、async/await 需要说明的是,在 ES6 之前,JavaScript 语言本身没有异步,延迟类型、监听类型的异步都是由宿主提供的,并非语言的核心部分。 JavaScript常用异步编程 Promise Promise 对象用于表示一个异步操作的最终状态,及结果值。 Promise有几个特点: 对象的状态不受外界影响,有三种状态:pending(进行中)、fulfilled(成功)、rejected(失败)。只有异步操作的结果可以决定当前是哪种状态,其他操作无法改变。 状态一旦改变,就不会再变,任何时候都可以得到这个结果。状态改变只可能是:pending -> fulfilled 或 pending -> rejected 实例化后,会立即执行一次。所以一般将其用函数包裹起来,使用的时候调用一次。 如果执行后的回调也要做一些异步操作,可以无限的.then下去,当然要保证有返回值 方法: 对象方法 reject、resolve、all、race、allSettled(ES2020)

Java HashMap结构和原理

扶醉桌前 提交于 2020-11-30 12:04:01
结构: 数组+链表 +(>=1.8)红黑树 插入过程: 根据拿到key得hash值(并非直接拿hashCode,而是拿它的高位和低位进行重新计算得出全新的hash值,目的是为了减少hash碰撞),拿hash值根据数组长度-1(默认16)去得到数组索引。 当他拿到索引后会判断当前位置是否为空,为空则放入,不为空则找next,next不为空继续找next。假如放完元素后,该链表长度>8并且数组长度>=64 那么 转红黑树 。 hash碰撞 的本质只是数组索引一样之后的处理 扩容: 当hashMap的元素数量 >= 数组长度*0.75,那么进行扩容原长度2倍( 红黑树转链表 是在扩容中进行的,并非在删除中,只判断长度<=6转链表,不判断64)。 线程不安全的原因: 多个线程同时put元素时,扩容,可能会出现链表闭环 来源: oschina 链接: https://my.oschina.net/u/4352371/blog/4759660

vba,自定义公式,农历互转公历,excel ,wps

主宰稳场 提交于 2020-11-30 07:46:20
'vba 模块内容如下 自定义公式 '公历转农历模块 '原创:互联网 '修正: '// 农历数据定义 // '先以 H2B 函数还原成长度为 18 的字符串,其定义如下: '前12个字节代表1-12月:1为大月,0为小月;压缩成十六进制(1-3位) '第13位为闰月的情况,1为大月30天,0为小月29天;(4位) '第14位为闰月的月份,如果不是闰月为0,否则给出月份(5位) '最后4位为当年农历新年的公历日期,如0131代表1月31日;当作数值转十六进制(6-7位) '农历常量(1899~2100,共202年) Private Const ylData = "AB500D2,4BD0883," _ & "4AE00DB,A5700D0,54D0581,D2600D8,D9500CC,655147D,56A00D5,9AD00CA,55D027A,4AE00D2," _ & "A5B0682,A4D00DA,D2500CE,D25157E,B5500D6,56A00CC,ADA027B,95B00D3,49717C9,49B00DC," _ & "A4B00D0,B4B0580,6A500D8,6D400CD,AB5147C,2B600D5,95700CA,52F027B,49700D2,6560682," _ & "D4A00D9,EA500CE,6A9157E,5AD00D6

WPS 2019 多个sheet表拆分成独立的excel文件 (VBA工具)

烈酒焚心 提交于 2020-11-30 07:25:39
参考: https://www.cnblogs.com/hackxiyu/p/8945975.html 场景:将多个sheet表拆分成独立的excel文件 一、安装VB工具: 默认情况下:wps -- 开发工具 --- VB 编辑器是灰选状态(即不可用状态),此时需要先安装vb工具: VBA For WPS 2019 安装步骤依次为:vcredist_x86.exe、Vba71.msi、Vba71_1033.MSI、Vba71_2052.msi 二、操作步骤: 点击 【开发工具】--》【vba编辑器】--》【插入】--》【模块】,输入如下代码: Private Sub 分拆工作表() Dim sht As Worksheet Dim MyBook As Workbook Set MyBook = ActiveWorkbook For Each sht In MyBook.Sheets sht.Copy ActiveWorkbook.SaveAs Filename:=MyBook.Path & "\" & sht.Name, FileFormat:=xlNormal '将工作簿另存为EXCEL默认格式 ActiveWorkbook.Close Next MsgBox "文件已经被分拆完毕!" End Sub 上述代码粘贴后,不用保存,直接点击运行即可拆分文件到该报文的同级目录下

数据结构(C语言版)-第4章 串、数组和广义表

百般思念 提交于 2020-11-30 04:06:56
补充:C语言中常用的串运算 调用标准库函数 #include<string.h> 串比较,strcmp(char s1,char s2) 串复制,strcpy(char to,char from) 串连接,strcat(char to,char from) 求串长,strlen(char s) 4.1 串 串(String)----零个或多个字符组成的有限序列 串的存储结构:顺序存储、链式存储 顺序存储表示 typedef struct { char *ch; // 若串非空,则按串长分配存储区, // 否则ch为NULL int length; // 串长度 }HString; 链式存储表示 #define CHUNKSIZE 80 // 可由用户定义的块大小 typedef struct Chunk{ char ch[CHUNKSIZE]; struct Chunk * next; }Chunk; typedef struct { Chunk *head,*tail; // 串的头指针和尾指针 int curlen; // 串的当前长度 }LString; 串的模式匹配算法: BF算法设计思想: Index(S,T,pos) 将主串的第pos个字符和模式的第一个字符比较, 若相等,继续逐个比较后续字符; 若不等,从主串的下一字符起,重新与模式的第一个字符比较。

JDK1.8的HashMap实现原理和源码解析

耗尽温柔 提交于 2020-11-30 02:31:40
  哈希表(hash table)也叫散列表,是一种非常重要的数据结构。许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK8的HashMap源码进行分析。 一、什么是哈希表 先了解下基本数据结构。 数组 :采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)。 线性链表 :对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n)。 二叉树 :对一棵相对平衡的有序二叉树,对其进行插入,查找,删除等操作,平均复杂度均为O(logn)。 哈希表 :相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1)。 我们知道,数据结构的物理存储结构只有两种: 顺序存储结构 和 链式存储结构 (像栈,队列,树,图等是从逻辑结构去抽象的,映射到内存中,也这两种物理组织形式),而在上面我们提到过,在数组中根据下标查找某个元素

7.玩转数据结构——集合(Set)与映射(Map)

﹥>﹥吖頭↗ 提交于 2020-11-30 00:46:22
---恢复内容开始--- 1.. 集合的应用 集合可以用来 去重 集合可以用于进行客户的统计 集合可以用于文本词汇量的统计 2.. 集合的实现 定义集合的接口,需要实现如下操作 1 Set<E> 2 · void add(E) // 不能添加重复元素 3 · void remove(E) 4 · boolean contains(E) 5 · int getSize() 6 · boolean isEmpty() 以上接口,二分搜索树都是支持的,只要把二分搜索树包装一下。 本节主要关注以二分搜索树为底层的实现,实现集合set(用二分搜索树作为集合的底层实现) 集合接口的业务逻辑如下: 1 public interface Set<E> { // 接口叫set,对于集合接口定义来说,是支持泛型的 2 3 void add(E e); 4 boolean contains(E e); 5 void remove(E e); 6 int getSize(); 7 boolean isEmpty(); 8 } 用二分搜索树作为集合的底层实现 1 public class BSTSet<E extends Comparable<E>> implements Set<E> { //类BSTSe:基于二分搜索树实现的集合的一个类 2 //支持泛型,对于泛型类型E,还必须是可以比较的

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件

做~自己de王妃 提交于 2020-11-30 00:01:45
注册startup类可以配置我们web应用的启动逻辑,使用的就是UseStartUp方法,asp.net core就会实例化这个类 并调用startup类里面的两个方法ConfigureServices和Configure ConfigureServices方法里是注册服务,注入这些服务后就可以注入到其他的方法或者类里面进行使用,这些注册的服务包括我们自己的写这些服务,也包含.net core预定义好的一些服务 也包含.net core预定义好的一些服务,有一些默认也是没有注册的,需要我们在这里注册下 方法:Configure里面,我们使用IApplicationBuilder来配置我们的中间件,在真实的项目里很少使用app.Run方法,通常app.Run里面配置的中间件都是非常简单的中间件,所以在真实的羡慕里面,不大用app.Run这个中间件 真实项目里通常使用app.use开头的这些方法 useCors是跨域的,use开头的方法把中间件都封装了另外一个方法或者另外一个类里面了 例如这里使用useWelcomePage();这个中间件,运行查看效果 打开 换个路由地址都是这个欢迎页,不管你进来是什么样的路径,都是这个欢迎页,后面的中间件就不会走了 中间件的参数通常在这里写,通常是一个对象,例如这里 然后通过参数的设置来配置中间件 例如这里我们设置中间件的路径是/Welcome

[BJWC2018]最长上升子序列

别说谁变了你拦得住时间么 提交于 2020-11-29 22:00:49
十分感谢GXZ大佬的讲解,此处致以敬意!emmmm在初学状压DP时就理解了如此精妙的一道题,感到很开森~ $Address$ ##$\color{red}{\mathcal{Description}}$ 现在有一个长度为n的随机排列,求它的最长上升子序列长度的期望。 为了避免精度误差,你只需要输出答案模998244353的余数。 ##$\color{red}{\mathcal{Solution}}$ 那么这道题,作为一道显然不是那么可做的题,我们首先来讲一下如何骗分:$next_permutation$枚举全排列,然后$nlogn$求一遍长度,最终复杂度大约维持在$O(n!\times nlogn)$的水平,看一眼数据规模,好像对于$n\leq 9$的数据,在你的常数小的情况下跑出来时没有什么问题的。 $emmmm$思考一下数据范围,能够用最暴力的方法骗到分的概率极其的低。 于是我们考虑$dp$是否可行。 因为事实上,我们可以看到从左向右推好像不是很可行,于是我们考虑,对于一个排列,我们把数从小到大插入到一个空的数列里面。 那么我们首先令一个$f_i$(放心跟程序没啥关系)表示,在当前已经确定的一个序列里面,从左至右第$i$个数的最长上升子序列长度。基于这个数组,我们再令$maxL_i$表示前缀最小值,即$$maxL_i = max{f_1,f_2...,f_i}$$那么对于这个