temp

九宫重排

我的未来我决定 提交于 2020-01-27 02:05:38
问题描述   如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。   我们把第一个图的局面记为:12345678.   把第二个图的局面记为:123.46758   显然是按从上到下,从左到右的顺序记录数字,空格记为句点。   本题目的任务是已知九宫的初态和终态,求最少经过多少步的移动可以到达。如果无论多少步都无法到达,则输出-1。 输入格式   输入第一行包含九宫的初态,第二行包含九宫的终态。 输出格式   输出最少的步数,如果不存在方案,则输出-1。 样例输入 12345678. 123.46758 样例输出 3 样例输入 13524678. 46758123. 样例输出 22 题解:   九宫重排,迷宫问题的最短路问题都是可以用广度优先搜索算法来解决的,具体就是以当前状态为起点,遍历其周围的各个结点,把它们分别放在队列中,在对当前状态处理完之后,就可以进行当前状态的迭代了   注意,上面的"状态"必须的完整的,因为他周围的每个后继状态都需要当前的完整信息,这样才能进行下一次迭代,进行完备的广度搜索.   对于此题,具体就是:当前矩阵,步数,空格位置. 代码示例: 1 #include<iostream> 2 #include<queue> 3 using

两个数相加

牧云@^-^@ 提交于 2020-01-26 16:08:35
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 package com.leetcode.part1; /** * @author :shix * @date :Created in 2020/1/26 14:09 * @description:两数相加 * @modified By: */ public class AddTwoNumbers { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = null;//返回结果 ListNode previousNode = null;//存储上一个节点 boolean flag = false;//是否进位 ListNode p1 = l1; ListNode p2 = l2; while (p1 != null && p2 != null) { int temp = p1.val + p2

django网站重复进出

旧巷老猫 提交于 2020-01-26 08:54:29
今天使用django写代码的时候遇到了一个问题,大概写一个更新功能,再views.py中先写一个 update 函数,用来跳转到更新的页面,函数如下: def update(request): textid = request.GET.get("textid") temp = pertext.objects.get(textid=textid) ret = {"content": temp.content} request.session['updateid'] = textid return render(request, "update.html", ret) 然后在更新页面更新完后进行更新并且跳转到首页,更新的函数为 updatediscuss 函数,函数如下: def updatediscuss(request): textid = request.session['updateid'] temp = pertext.objects.get(textid=textid) temp.content = request.POST.get("content") temp.save() return HttpResponseRedirect('/blog') 然而在逻辑上没有错的时候,点击更新却出现了错误: 其中pertext是我的数据库中的一个表,在查询的过程中

底层工具类,storage封装

こ雲淡風輕ζ 提交于 2020-01-26 02:13:43
storage封装 1.先简单讲讲storage的基础 cookie遗留问题 : 1:大小的限制:4KB 不能接受大数据 2:带宽的限制:cookie必须服务器和客户端数据会进行同步, 过时,会去 通知服务器清楚cookie数据 3:如果不加密的传输非常不安全 4:操作是非常复杂,document.cookie进行操作 优点:会根据时间自动清楚数据.时效作用 storage: 1:存储的空间 5MB < storage < 10MB 2:没带宽限制 3:操作简单 4:独立的存储空间但是storage不能替代cookie。 storage的分类 会话级别:sessionStorage 本地存储:localStorage 常用的方法: 设值:setItem(key,value); 取值:getItem(key,value) 删值:removeItem(key); 清除:clear(); 个数:length取键:key(index),获取制定位置的键 index=0 方法封装 export const { localStorage , sessionStorage } = window export class LocalStorage { set ( key , value , time ) { try { const temp = { value , } ; if ( time &&

【PAT】1008. 数组元素循环右移问题 (20)

折月煮酒 提交于 2020-01-25 16:47:11
1008. 数组元素循环右移问题 (20) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A 0 A 1 ……A N-1 )变换为(A N-M …… A N-1 A 0 A 1 ……A N-M-1 )(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 每个输入包含一个测试用例,第1行输入N ( 1<=N<=100)、M(M>=0);第2行输入N个整数,之间用空格分隔。 输出格式: 在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。 输入样例: 6 2 1 2 3 4 5 6 输出样例: 5 6 1 2 3 4 方法一:程序说明:  1.本题直接打印出需要的数组元素即可,不需要进行数组的移位  2.为了防止出现 m>=n 的情况,加入一句 m%=n,增加鲁棒性C++ 代码如下: 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main(){ 5 int m,n,i; 6 cin>>n>>m; 7 m %= n; 8 int num[n]; 9 for(i=0;i<n;i++) 10 cin>>num[i]; 11 for(i=n-m;i<n;i++

SQLSERVER中统计所有表的记录数

拈花ヽ惹草 提交于 2020-01-25 07:24:03
今天群里的一个朋友问了个问题:如何把数据库里所有表的记录数都统计出来? 由于以前我曾经试着写过一个存储过程,作用就是删除所有表的内容,思路是这样的: 首先通过sysobjects表构造一个sql语句字符串'DELETE 表名',其中表名就是sysobjects中的name列,把这些DELETE语句字符串连接起来的方法一是通过游标,二则是直接利用如下语句: select @sql = @sql + 'DELETE ' + name from sysobjects where xtype='U'; 这是一个很有用的技巧,在合适的地方用会很大程度的优化语句运行速度. 然后就是通过exec(@sql)执行该字符串. 而把数据库所有表的记录数统计出来和这个思路几乎完全一样,不同的就是把'DELETE 表名' 改为'SELECT 表名,COUNT(1) FROM 表名',主要这点不同而已,如果构造完字符串并执行完毕,可以把结果输出到一个临时表,那么再统计所有记录数就轻而易举了. 下面就是我写的一个语句: declare @sql varchar(8000),@count int,@step int set nocount on --@step越大运行速度越快,但如果太大会造成生成的sql字符串超出限制导致语句不完整出错 --建议为50 set @step = 50 if object_id(N

PAT - L2-011. 玩转二叉树(分冶)

橙三吉。 提交于 2020-01-25 07:22:35
L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例: 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 输出样例: 4 6 1 7 5 3 2 #include <iostream> #include <queue> using namespace std; /*************************************************************************************************************** 思路: 1,利用分冶创建二叉树(又花了一点时间理解 L1,R1,L2,R2) 2,利用 BFS 输出,因为题意是镜像,先将右孩子入队列,再将左孩子入队列即可 ***********

AC自动机模板

霸气de小男生 提交于 2020-01-24 14:44:27
AC自动机原理: 摘自 http://www.cnblogs.com/huangxincheng/archive/2012/12/02/2798317.html ,ORZ大牛 一:构建AC自动机 同样我也用网上的经典例子,现有say she shr he her 这样5个模式串,主串为yasherhs,我要做的就是哪些模式串在主串中出现过? 1: 构建trie树 如果看过我前面的文章,构建trie树还是很容易的。 2:失败指针 构建失败指针是AC自动机的核心所在,玩转了它也就玩转了AC自动机,失败指针非常类似于KMP中的next数组,也就是说, 当我的主串在trie树中进行匹配的时候,如果当前节点不能再继续进行匹配,那么我们就会走到当前节点的failNode节点继续进行 匹配,构建failnode节点也是很流程化的。 ①:root节点的子节点的failnode都是指向root。 ②:当走到在“she”中的”h“节点时,我们给它的failnode设置什么呢?此时就要走该节点(h)的父节点(s)的失败指针,一直回溯直 到找到某个节点的孩子节点也是当初节点同样的字符(h),没有找到的话,其失败指针就指向root。 比如:h节点的父节点为s,s的failnode节点为root,走到root后继续寻找子节点为h的节点,恰好我们找到了,( 假如还是没 有找到,则继续走该节点的failnode

Nginx的安装

二次信任 提交于 2020-01-22 16:16:52
1. 去官网 nginx.org 下载对应的nginx 包 2. 上传到linux 服务器上 3. 安装依赖环境 (1)安装gcc 环境 nginx 是c 语言写的,所以需要安装c 环境 yum install gcc-c++ (2)安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel (3) zlib压缩和解压缩依赖 yum install -y zlib zlib-devel (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https yum install -y openssl openssl-devel 4. 解压,需要注意的是解压后得到的是源码,源码需要编译过后才能安装 tar -zxvf nginx-1.16.1.tar.gz 5. 编译之前,先创建nginx 临时目录 mkdir /var/temp/nginx -p 6. 在nginx 目录,输入如下命令进行配置,目的是为了创建吗makefile 文件 ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log -

shell--创建函数

百般思念 提交于 2020-01-22 15:55:37
shell--创建函数 知识体系: #创建函数 #使用参数 #共享函数 shell脚本代码可以封装在函数内,而函数可以在脚本任意处使用,由此减少大段代码的重复编写。 1、基本脚本函数 函数是被赋予名称的脚本代码块,可以在代码的任意位置使用。当需要调用代码块的时候,只需引用代码块被赋予的函数名即可。 1.1、创建函数 在bash shell脚本中创建函数可以使用两种方式: *关键字function,基本格式为: function name{ commands } *()方式: name() { commands } 下面就对这两种方式举例创建. 1.2、使用函数 如下采用上面创建函数的两种方式举例: [root@wzp ~]# chmod u+x 7.1test [root@wzp ~]# cat 7.1test #!/bin/bash function fun1 { echo "this is the first function" } fun1 fun2() { echo "this is the second function" } fun2 [root@wzp ~]# ./7.1test this is the first function this is the second function 这里头有两个函数名:fun1和fun2,对应两个函数执行后显示不同结果。