
算法
文章平均质量分 60
晚晶
正在工作
展开
-
[个人笔记][C++]自拟的将屏幕图像分割成色块后,同色像素合并压缩传输的图像传输算法
该文章是记录自己做过自拟算法的设计与研究。原创 2023-02-26 15:55:36 · 209 阅读 · 0 评论 -
突然写出一种时分秒计时器的一种很特别的累加写法
时分秒计时器累加算法原创 2022-11-13 19:45:44 · 240 阅读 · 0 评论 -
[C++/easyx]希尔伯特曲线的指定点输出及其完整可视化
两个问题:1.如何输出希尔伯特曲线的指定经过的第p个点坐标?2.如何绘制出整个n阶的希尔伯特曲线(即可视化输出)?首先,我们来说明下什么是希尔伯特曲线。什么是希尔伯特曲线,我借用这张截图一用即可说明:我们规定左下角方格的坐标为(0,0),右下角方格的坐标为(2的n次方-1,0)。注意,以下n均指n阶希尔伯特曲线,p均指第p个点。那么我们来解决第一个问题:如何输出希尔伯特曲线的指定经过的第p个点坐标?首先我们观察这些曲线的特点,可以看见,如果把整体分成四大均匀块,那么整体来讲,一个希尔伯特图原创 2021-01-07 21:55:06 · 1575 阅读 · 5 评论 -
[C]可视化的Dijkstra标号算法求带权图的最短路径和距离
Dijkstra标号算法的思路在于选取一个开始点,遍历所有未被确定到达该点所需最短路径的点,对比所有点的当前距离,选择继承或更新成更短的距离,图有多少个点,就有多少步,每一步都将确立一个到达某点的最短路径,直至所有点的最短路径都被判断完毕(即该点当前路径已经是最短的路径了)。n个点的图只要判断n-1次(因为起点不用判断最短路径),那么该图起点到所有点的最短距离便有了。完整代码和示例图在后边,我先演示下我的思路构建过程。首先我先画个界面,基于一共有四种图,我就在首界面罗列出四个选项。上图所应用代码:原创 2020-12-14 11:52:51 · 2084 阅读 · 3 评论 -
[C]可视化的Kruskal算法求最小生成树
Kruskal算法的思路在于从图中最小权值的路径开始连接,只要不形成回路,那就继续连接当前图中未连接的权值最小的路径。直至n个点的图被连接了n-1次,那么该图的最小生成树便构建成功。完整代码和示例图在后边,我先演示下我的思路构建过程。首先我先画个界面,基于一共有四种图,我就在首界面罗列出四个选项。上图所应用代码:system("title 请选择"); while (true) { system("cls"); printf("请选择生成何种带权图的最小生成树:\n"); prin原创 2020-12-14 11:07:42 · 1243 阅读 · 0 评论 -
[C]不用递归,写出快速求幂的程序
刚解完2.15这道题([C]关于X的62次方如何求出的我的一种解法)往下看就发现了这个,直接贴上我解2.15这道题的时候的出现的一种解法就行了,而且算法恰好满足2.16和2.17的要求。程序如下://used用来累计使用乘法的次数#include <stdio.h>#include <stdlib.h>#define NUMBER 2#define P 62int used = 0;//62=32+16+8+4+2long long p(long long x, .原创 2020-08-29 20:56:06 · 981 阅读 · 0 评论 -
[C]证明X的62次方可以只用8次乘法算出
近日看到一道算法题:这个题目引起了我的兴趣,于是我着手开始设计算法,以下便是我想到并琢磨改良出的第一个解法://used用来累计使用乘法的次数#include <stdio.h>#include <stdlib.h>#define NUMBER 2#define P 62int used = 0;//62=32+16+8+4+2long long p(long long x, int in) { long long number = 1; do { if原创 2020-08-29 20:46:00 · 1239 阅读 · 1 评论 -
[C]生成指定范围内不重复元素的随机数数列的四种方法
测试运行时间:#include <stdio.h>#include <stdlib.h>#include <time.h>int main() { //准备(不计入运算时间) int a, b, c, d; int rand_var; int *number; char *used; clock_t c_t; srand(1); printf("请输入生成随机数的范围(a~b):"); scanf_s("%d~%d", &a, &原创 2020-08-26 18:37:18 · 5049 阅读 · 0 评论 -
[C]思考题之取石子游戏{轮流从若干石子堆中取若干粒石子}
继续写练习题的日子题目如下:根据这篇文章(https://www.zhihu.com/question/27467617?sort=created)对这类问题的分析经过思考,我舍弃了以堆数为1的堆的总数目的奇偶以及剩余堆的总数目的奇偶为逻辑判断的思路,转而采用各个堆的石头数目异或的总和为判断依据,并写了点辅助的逻辑以让该异或的总和过大或者为0的特殊情况得到解决。解得代码如下:#include <stdio.h>#include <Windows.h>#includ.原创 2020-07-25 15:08:03 · 703 阅读 · 0 评论 -
[C]常胜将军思考题之取最后一根火柴为输
关于这类取火柴问题,在掌握了规则的前提下,先手必赢。所以在电脑作为后手的前提下,只能祈祷玩家不懂规则,第一步就取错数目,之后就是电脑必赢了。题目如下:#include <stdio.h>#include <Windows.h>#define fire_wood_all 22//最初火柴数目#define fire_wood_get 4//一次能拿几根int fire_wood = fire_wood_all;//剩下火柴数int player_get;int co原创 2020-07-25 10:38:03 · 522 阅读 · 0 评论 -
[C]黑白子交换马步走法之递归解法{含所有走法数及最少步数走法}
原题目如下:递归解法:[输出所有解法,以及最少步数解法]#include <stdio.h>char space[3][3] = { -1,0,-2,0,0,0,1,0,2 };//棋盘int memory[20][5];//行走历史记录int memory_p = 0;//待记录的一步应该记录在第几个元素int memory_run = 0;//已经行走步数int min_run = 20;//最少行走步数int min_memory[20][5];//最少行走步数历史记录原创 2020-07-25 09:06:50 · 433 阅读 · 0 评论 -
[C]黑白子交换之递归解法{含所有走法及最少步数走法}
原题目如下:递归解法:[输出所有解法,以及最少步数解法]#include <stdio.h>char space[7] = { -3,-2,-1,0,1,2,3 };//棋盘,负数白棋,正数黑棋,0空格int memory[1000];//行走历史记录int memory_p = 0;//待记录的一步应该记录在第几个元素int memory_run = 0;//已经行走步数int min_run = 1000;//最少行走步数int min_memory[1000];//最少原创 2020-07-19 19:31:16 · 904 阅读 · 0 评论 -
[C++/算法问题]八皇后问题之循环解法[详细注释]
#include <iostream>#include <time.h>using namespace std;void putnow(char *check) {//输出棋盘(启用该函数则可观察棋盘结果) for (char j = 0; j < 8; ++j) { for (char i = 0; i < 8; ++i) printf("%c ", check[j * 8 + i] ? 'G' : '*'); printf("\n"); }原创 2020-05-28 18:47:34 · 373 阅读 · 0 评论 -
个人填充图形算法之四方格式扫描[含透明化背景以输出人物]
个人图形算法:四方格式扫描[含透明化背景以输出人物]使用库:easyx语言:C++描述:功能:当当前点是要替换的颜色时候,查询周围四格是否有HIDE_COLOR这个目标色,如果有则将当前点替换成HIDE_COLOR,没有则继续下一个方法:循环往复地扫描,对于复杂程度高的图形需要反复进行扫描,一般图形,一次扫描即可完成随着扫描次数增多,再内凹曲折的不规则图形也终究会被替换干净目录...原创 2020-04-10 15:22:58 · 339 阅读 · 0 评论 -
个人填充图形算法之蔓延扫描[含透明化背景以输出人物]
个人图形算法:蔓延扫描[含透明化背景以输出人物]使用库:easyx语言:C++描述:只需一次,就能把人物外围所有在误差范围内的颜色换成HIDE_COLOR目标色的算法,不会有外部间隙没清理到。使用该算法前应该具有的前置代码:#define HIDE_COLOR 0xFF555555//设置目标颜色struct color_group{//先建立一个用来存储颜色的结构体 BYTE ...原创 2020-04-10 13:58:20 · 260 阅读 · 0 评论 -
个人填充图形算法之直线扫描[含透明化背景以输出人物]
个人图形算法:直线扫描[含透明化背景以输出人物]使用库:easyx语言:C++作用:对某个IMAGE对象的存储的图形进行分别从上下左右开始直线扫描的像素点识别,如果是要被替换的颜色,或者在与替换颜色相似,则都会被替换成目标颜色HIDE_COLOR(一个常量)使用该算法前应该具有的前置代码:#define HIDE_COLOR 0xFF555555//设置目标颜色struct col...原创 2020-04-10 13:34:04 · 181 阅读 · 0 评论 -
个人填充图形算法之逐点扫描[含透明化背景以输出人物]
个人图形算法:逐点扫描[含透明化背景以输出人物]使用库:easyx语言:C++作用:对某个IMAGE对象的存储的图形进行一行行的自左到右的像素点识别,如果是要被替换的颜色,或者在与替换颜色相似,则都会被替换成目标颜色HIDE_COLOR(一个常量)使用该算法前应该具有的前置代码:#define HIDE_COLOR 0xFF555555//设置目标颜色struct color_gr...原创 2020-04-10 12:37:17 · 407 阅读 · 0 评论