- 博客(58)
- 资源 (4)
- 收藏
- 关注
原创 Unity 鼠标拖拽功能
继承3个处理拖拽方法的接口IBeginDragHandler, IDragHandler, IEndDragHandler
2022-11-07 14:02:48
1439
1
原创 五子棋简单AI算法(C#版)
本文只提供AI算法,不提供棋盘,因为棋盘不是我写的,不好拿出来分享,望谅解。当前AI只能计算当前局面下最优的一步,没有深度,水平一般的普通人很轻易就会被其击败,但是有很大的升级空间,可以以此为基础再行添加算法添加深度,以及剪枝等算法。当前AI为黑色时水平较高,为白色时需要修改得分表,得分表会影响AI的决策,得分可以自行修改,此得分表并非最佳得分表,但是经过我的测试貌似还可以。ps:这是AI的核心非常重要得分表如下: AI算法思路讲解:首先我们需要知道输入和输出,给输入当前棋盘的二维数组,从而让他返
2022-06-28 12:12:36
4556
4
原创 KMP算法实现(java日记)
一个冷知识:kmp的next数组有两种写法,一种是教科书上常用的以-1,0为开头的,一种是竞赛中常用的以0为开头的,两种所求next数组不同,后续使用方式也不同,代码自然也不尽相同,但是思路一致,找出一种适合自己的写法理解记忆就好,不用过于纠结。我所用的是b站上左程云老师的写法。代码如下:...
2022-06-20 14:04:26
229
原创 python图像文字识别(附灰度化二值化和压缩图片)
前言:由于python的图像识别库pytesseract太垃圾的缘故,我使用的是百度的OCR接口,使用之前需要去百度AI注册账号并创建一个接口来给自己调用,创建方法网上一大堆教程自己搜,这篇文章主要是自己备用以后可能会用到,在此记录。使用前先安装:测试图片:返回结果: 代码如下:...
2022-06-19 12:58:08
1513
原创 python使用tkinter实现学生信息管理系统(下)
原本我是不打算写下篇的,原因我也说了,没什么用纯粹是写着玩的,而且隔了好长时间了我也没什么印象了想要接上比较费时费力,但是我发现一件很神奇的事情,就是我觉得有用的文章没有太多人看,而这种花里胡哨的文章你们却很感兴趣,导致好多人问我要下篇,我想了想反正放假了也没什么事情,那就应广大网友的要求就把他补全吧(哈哈哈,想打我吗?)。参考:Python GUI项目实战(一)登录窗体的设计与实现 - 云+社区 - 腾讯云 (tencent.com)我们接着上一篇的内容继续做拓展,上篇我们实现了登录,显示,关键字搜索的操
2022-06-17 13:11:00
6119
16
原创 选择排序(Java日记)
算法思想:依次从0,1,2...N-1中选择最小的数并放在前面(互换位置),放完后不在关注此位置,从该位置的后一位继续重复该操作。
2022-06-09 19:01:29
128
原创 C#图像栅格叠加
老师布置一个实验报告叫什么叠加分析要求用C#实现,然后什么也没说什么也不讲,真的是一脸懵逼,上网查了一下后发现全都是arcgis的,但是好在还是查到了一点有用的思路,如下:姑且就当它是二选一吧,反正她什么都没说,那也别怪我们自由发挥了,上面两个一看就知道肯定是栅格叠加更简单,所以就搞它吧,再给它替换成图片,来一波狸猫换太子,面子上过得去,显得复杂一点,还不够的话再给她来个进度条动态显示,嘿嘿,完美。操作步骤:1.显示栅格2.显示数据3.调进度条4.栅格叠加->调进度条->栅格叠加->调进度条......另外
2022-06-08 11:58:57
1332
5
原创 C#实现GIS中莫顿码的计算
计算步骤:1.将横坐标和纵坐标分别转化为二进制,需要注意的是转化后的二进制位数要相同(本文中以8为二进制码进行演示)2.交叉排序后组合成16位2进制码3.将16位二进制码重新转化为整形数字,此数字即为我们需要的莫顿码C#代码如下:...
2022-06-07 12:07:52
1685
原创 C语言 521猫语表白代码(unicode加密)
用实力告诉她们,谁说我们程序员不懂浪漫,不懂幽默,代码原理很简单,整篇就一个知识点,宏的定义,你也可以改成自己想要说的话,但是我觉得其实没必要改,因为已经表达的很清楚了,运用了我非常喜欢的一段话,这里我就不运行了,保持点神秘感。代码如下:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#define 喵喵喵 main#define 喵喵 int#define 喵 (#define 喵喵呜 )#define 喵喵喵喵 {#de
2022-05-21 11:39:11
3400
原创 python学习T字体加密分析
前言:本篇仅作为技术交流分析学习通字体加密的方式以及解法,给爬虫爱好者们提供一些思路。如果你想要爬取学习通的作业题可以看这篇:python爬虫笔记(学习T)_星空的你的博客-优快云博客首先:经过我的观察学习通并非所有页面都有字体加密,有加密的页面一般为作业和章节测试,并且当提交完作业或测试后,字体加密会消失,加密的方式为随机选择文字进行加密。特点:被加密的页面必有base64编码,直接在页面源码中搜索base64(base64后面的一大长串就是加密字体的映射文件,直接复制在浏览器放入url中回
2022-05-20 13:31:14
969
原创 电脑操作手机scrcpy软件
下载地址:网址:scrcpy-win64-v1.17提取码: yvid ;github网址:scrcpy;我这里只使用有线连接:首先需要在手机开发者选项中打开usb调试选项,而后连接数据线,运行文件夹中scrcpy.exe即可常用快捷键:Mod键替换为Alt即可本篇只作为笔记便于查找,无其他意图。...
2022-05-19 10:37:12
509
原创 python使用selenium获取某通章节测试题
使用selenium效率很低,而且不是通用的,爬取其他课程要对代码进行修改,建议使用下方文章:python爬虫笔记(学习T)_星空的你的博客-优快云博客爬取的网站不是某通原网,可能是内部网站,分析网站源码抓包发现的,此网站目前没有字体加密。下方代码:import timefrom lxml import etreefrom bs4 import BeautifulSoupimport osfrom selenium import webdriverfrom selenium.w
2022-05-18 21:14:41
822
原创 python爬虫笔记(学习T)
代码在下方,运行一下就知道了,此篇文章不可多说,望理解。courseId在学习T课程页面上方的网页地址中可以获取。如果还不清楚去下面看思路讲解。代码如下:import osimport requestsfrom bs4 import BeautifulSoupimport threadingimport timefrom queue import Queueimport json'''第一步,获取所有KnowledgeId'''print('获取所有Knowledg.
2022-05-18 21:00:02
678
原创 python微信公众号自动化搜题
先看这篇来获取学习通中所有习题:python获取学习同指定课程章节(自己悟),代码注释详细,观赏性强_星空的你的博客-优快云博客上一篇我们已经获取了学习通中所有的章节练习题,这篇讲解如何进行自动化搜索,一般的搜题方式有两种,一种是在线网站搜题用selenium完成自动化,但是我发现这种方式搜题结果不是特别准确,还有就是用客户端和wx微公众号了,说实话这两种方式相比selenium要复杂的多,倒不是技术有多复杂,而是资源难找,难以学习,就比如操作wx的库itchat,wxpy都凉凉了,所以我现在在用的是
2022-05-18 20:45:54
2079
2
原创 C#委托的示例,使用委托执行函数动作链,实现对swich case 的替换
借用一下老师的图, 让你知道我要干什么using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp6{ delegate int[] Move(int x,int y);//建立一个移动的委托,委托类似于C中函数指针,方便执行函数动作连 class Prog.
2022-05-05 17:51:19
1007
1
原创 C#Dijkstra(迪杰斯特拉)求算法最短路线,以及使用回溯算法寻找路径(bug修复)
上一篇文章中有人反馈路径数值有bug,我对此进行了更改与修复,大家看着理解吧,我还有事要忙,就不进行讲解了,另外在此感谢小伙伴的反馈,之前没认真做测试实在抱歉。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Thre
2022-05-03 19:09:53
955
原创 C#Dijkstra(迪杰斯特拉)求算法最短路线,以及使用回溯算法寻找路径
讲解都在代码段中可谓是非常详细了,回溯算法没细说因为很简单,扫一眼就知道是怎么回事了using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.For.
2022-05-03 14:56:09
589
1
原创 python 批量处理word中表格导入excel
演示图片:auto_we源码:import xlrd, xlwtfrom xlutils.copy import copy as xl_copyfrom docx import Documentimport ospath = "words文件夹"if not os.path.exists(path): os.makedirs(path)files= os.listdir(path)word_list = []for file in ...
2022-04-10 10:09:11
1525
原创 C#实现access数据库的增删改查
数据库连接测试如果失败,不代表代码运行的时候也连不上,如果你用的是64位access,你需要下载:Download Microsoft Access 2010 数据库引擎可再发行程序包 from Official Microsoft Download Center下载完成后测试仍然报错,但是代码运行实际连接成功。代码如下:using System;using System.Data; using System.Data.OleDb;namespace ConsoleAp.
2022-04-02 15:51:33
2158
原创 C#实现txt文件的增删改查
代码如下:using System;using System.Collections.Generic;using System.IO;namespace ConsoleApp1{ class Person { public string name; public string id; public string password; public string state; public strin
2022-04-01 22:56:33
2526
原创 KMP求解next数组的一些思考(私人思路记录,仅限参考)
这篇文章主要说明我思考许久的一个问题就是下方图片中的while循环为什么不能直接让k归0,而一定要用while循环一点一点让k跳到0.下方两张图片第一张是我最开始自己实现时的代码思路,第二张是官方正确答案,主要分析我自己思路出现的问题,以及我对next数组的一些理解我的写法:(i--和continue可以省略,效果一样,但都是错误的)正确写法: 先说明:上方两种写法在输入的字符串中没有二次及更多次重复包含时结果相同,如字符串"ABCDABCDABCDABCC";当有二次重复包含时我的
2022-03-31 23:49:23
458
原创 二叉树的前中后序查找(Java日记十二)
思想:在遍历函数上加以修改,设置函数返回值,找到返回1(在原输出位置做相等判断),否则返回0,在递归函数下方做判断,如果返回值为1就让它继续返回1。代码如下:package Tree;public class BTDemo { public static void main(String[] args) { char[] arr=new char[30]; int n=0; for (char i = 'A'; i < 'Z'; i
2022-03-31 18:58:12
656
原创 使用递归自动创建二叉树及前中后序遍历的实现(Java日记十一)
代码超简单,使用一个辅助数组存每个结点的名字,我比较懒就使用了循环自动生成了A到Y作为树的名字,利用数学关系锁定数组下标的位置来找到对应的名字,至于遍历用递归来写实在是太简单了,我都懒得解释了,看代码就能理解,所谓的前中后无非就是把输出语句换个位置。代码如下:public class BTDemo { public static void main(String[] args) { char[] arr=new char[30]; int n=0;
2022-03-27 16:21:45
623
原创 插值查找公式推导
首先看二分查找的mid = (high+low)/2,可进行变形mid=low+(high-low)/2。再看插值查找的mid=low+(high-low)*(key-arr[low])/(arr[high]-arr[low])。细看是不是只是用key在整序列中的占比来代替原来固定的1/2呢代码和折半查找一模一样,唯独mid的计算方式发生改变。这样的好处在于,对表长较长,且关键字分分布比较均匀,插值查找算法的平均性能要比折半查找要好的多。但是如果表中关键字分布极端不均匀那么插值查找还不如折半查找
2022-03-26 15:21:26
868
原创 基数排序算法详解,用最简的思想写最简的代码(C语言)
算法思想:依次按个、十、百、千等位排序最后将结果还给原数组,每一次大循环排一位。代码及说明如下:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#define N 10int main() { int arr[N] = { 52, 20, 4, 10, 17, 39, 8, 300, 60, 81 }; radixSort(arr); for (int i = 0; i < 10; i++) { printf("%
2022-03-26 12:59:12
1555
原创 八皇后问题最简解法(Java日记Ⅹ)
之前两篇文章介绍了一种思想的解法,不过之前的解法主要是解决全排列问题的,而八皇后问题其实还有另一种解法,这是目前我知道的最简单的解法,之前的思想是验证整个排列的数组而本章算法的思想是一个一个往里放,边放边验证这个位置是否可行,如果可行进入递归验证下一位,如果放到了最后一个位置下一位,说明上一个位置已成功,此时的n如果为8即可退出递归并把计数器加一,如果该位置不能放置,则会跳过该位置继续判断。代码如下:public class QueenDemo { public static void m
2022-03-25 16:24:28
661
原创 解决全排列问题,以及八皇后代码优化(Java日记Ⅸ)
上一篇中我们讲了八皇后递归的思路,但是代码实在是不堪入目,因为从零到七要试探上千万次,简直无法忍受,而我们也知道八皇后的排列方式就是8!的全排列问题,由此可在上一篇的基础上进行代码优化进一步减少运行次数(但还不是最简方法),由原来的需要判断上千万次减少为40320次虽然还是很多,但对于计算机来说还是可以接受的。代码以及说明如下:import java.util.ArrayList;import java.util.List;public class QueenDemo { publi
2022-03-25 15:34:37
729
原创 八皇后问题,为什么要使用递归,循环转递归的思考过程(Java日记Ⅷ)
说明:本篇旨在说明怎么想到使用递归,所使用的算法是最垃圾的也是最浅显易懂的(从零到七疯狂试探,没有任何优化),我最开始是想使用循环解决这个问题,但是并没有找到什么特别好的方法,只能一层一层套for循环,这个时候我其实就想到递归了,但为了能清晰的展现思路,我还是硬着头皮把它写出来了,这样更方便观察,能够让我们在把它转化成递归的时候让思路能够清晰直观,不至于不知道从何处下手。八皇后问题其实就是一个排列组合的问题,明白这一点后其实能减少许多不必要的试探,如果想看优化之后的递归代码请看下一篇Java日记Ⅸ。
2022-03-25 13:12:47
680
原创 用递归解决迷宫问题,以及我对递归的一些思考(Java日记Ⅶ)
递归比循环难,首先是想不到使用递归,其次是递归比循环更绕,一不小心就会死龟,究其原因是一个视角的问题,所谓当局者迷,旁观者清,当我们在写循环的时候使用的是上帝视角,我们知道只有在循环体内的代码会被反复执行,而在使用递归时,我们是第一人称视角,我们所书写的函数中所有的代码都在循环写一个循环一个,所以感觉很乱不知道如何下手。我自己的解决方案:调整视角,将自己置于全局,而不是函数中,把递归想象成一个参数不断变化的循环在思考递归时想象自己在debug调试,每一次进入递归的入口它的上一次都卡在某个if中还没有
2022-03-22 14:58:52
697
原创 超详细,一步一说明使用Java自带的栈和列表构造一个简单计算器(Java日记Ⅵ)
首先声明一下我的这个计算器只能计算加减乘除(除法会丢失精度,因为我限制的int,你可以自己试着写个double的),几位数都行,但是只能是正整数和0,不能有括号自然也不能写负数,但是首位允许写负数。先记录一下,以后有机会再给这个计算器升级。如果不明白原理,推荐去bilibili搜索Java数据结构,有一个老师原理讲的很好,但是代码有点拉,所以以下的代码是我参照他的算法思想自己写的,因为对Java的一些写法不是很了解,写的途中查了很多资料,一共花了一下午的时间,总的来说这个东西不简单,写的时候发现了好多好
2022-03-20 18:49:14
468
原创 将两个有序数组合并为一个新的有序数组(Java实现)
不可否认的是Java确实C语言方便许多,这种写法比我在C中的那种写法要好代码如下:public class Test { public static void main(String[] args) { int[] arr1={1,3,5,7,9}; int[] arr2={2,4,6,}; int[] arr3=Test.combin(arr1,arr2); for (int i:arr3 ) {
2022-03-19 17:53:43
1829
原创 约瑟夫问题与循环链表(Java日记Ⅴ)
总的来说没有太大难度,主要是当begin_index和count为一时程序容易出问题,要单独处理,另外我这里first在后cur在前,当begin_index为一时要单独处理first让它指向cur的前一位,代码写的不是特别满意,感觉有些地方可以简化,奈何今天事情太多,没时间重构了,就这样吧,毕竟也不是什么大问题。代码如下:public class YSFQuestion { public static void main(String[] args) { CircleLi
2022-03-19 15:45:15
381
原创 单链表的创建及基本操作函数(Java日记Ⅳ)
之前写过C语言的文章,Java思想不变只是换种写法,因此不做过多解释说明,代码里已经很清晰public class LinkListDemo { public static void main(String[] args) { LinkList lst=new LinkList(); lst.add(1,"Error"); lst.add(2,"Starry"); lst.insert(3,3,"lian");
2022-03-18 18:44:48
680
原创 循环队列的创建及演示(Java日记三)
本篇只是日记不做过多的讲解,不明白公式(rear+1)%maxsize==front,(rear-front+maxsize)%maxsize如何推导请移步(2条消息) 循环队列中公式的推导,原理,超详解_星空的你的博客-优快云博客代码如下:import java.util.Scanner;public class CircleQueueDemo { public static void main(String[] args) { CircleQue.
2022-03-18 15:37:55
934
原创 循环队列中公式的推导,原理,超详解
我这里讲的是空闲单元法,如下图首先规定 :front指向队列第一个元素rear指向队列最后一个元素的下一个位置假设maxsize=10因为循环,需要保证front和rear的值始终在0-9之间循环,由此想到取余即%a%b当a<b时结果为a,a>=0,b>0 ,于是有了下方:rear=rear%maxsizefront=front%maxsize以下所有的操作都是rear和rear%maxsize,front和front%maxsize相互之间的替换
2022-03-18 14:50:44
4164
原创 取模与取余
今天学Java的循环链表,发现一个问题就是%的运算,老师一直在说取模取模,我一直在想什么是取模那不是取余吗,于是有了这篇文章。所以老师说的有问题在Java中%是取余。此外,余数在数学中的定义是始终大于等于0的,而对于某些编程语言的取余运算不是按照上面的定义来执行的,因此才会出现余数小于0的情况。先说结论:在C/C++,Java,C#中%是取余,而在python中是取模,为避免出错尽量不使用负数进行运算取余(rem)和取模(mod)在被除数、除数同号时,结果是等同的,异号时不同。异号时取余结果符号
2022-03-18 13:08:49
1641
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人