![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
halisi7
这个作者很懒,什么都没留下…
展开
-
水管工游戏
水管工游戏-c语言原创 2022-06-01 17:20:44 · 482 阅读 · 0 评论 -
dfs与bfs解决宝岛探险
dfs与bfs原创 2022-06-01 17:19:35 · 301 阅读 · 0 评论 -
再解炸弹人-dfs
问题描述见炸弹人游戏—bfs | halisi7。代码实现#include <stdio.h>char a[21][21];int book[20][20] = { 0 };//初始值为0,表示没走过的路径int n,m, max = 0, sum = 0 , mx, my ;int getnum(int x, int y) {// int num = 0;//用来计数 int tx, ty; //从四个方向统计可以消灭的敌人 //向右 tx = x; ty = y;原创 2022-03-04 16:58:04 · 3784 阅读 · 0 评论 -
再解炸弹人-bfs
问题描述代码解决#include <stdio.h>char a[21][21];//用来存储地图struct node { int x;//横坐标 int y;//纵坐标};int getnum(int x,int y) {// int num=0;//用来计数 int tx, ty; //从四个方向统计可以消灭的敌人 //向右 tx = x; ty = y; while (a[tx][ty] != '#') {//判断是不是墙,不是墙继续 if原创 2022-03-03 17:23:39 · 254 阅读 · 0 评论 -
bfs之解救小哈
问题代码实现#include <stdio.h>struct node { int x;//横坐标 int y;//纵坐标 int s;//步数};int main() { struct node que[2501];//方便求上一个坐标的值,地图规定最大为50*50,每一个点为一个队列 //所以node最大为2500 //也可以用二维数组表示 int i,j, startx, starty, q, p,head,tail,n,m,k,tx,ty,flog; int原创 2022-03-01 14:34:08 · 276 阅读 · 0 评论 -
dfs之解救小哈-c语言
问题分析先让小哼往右边走,然后一直尝试下去,直到走不通的时候再回到这里。代码实现#include <stdio.h>int book[51][51],n, m,a[51][51],p,q,min=999999;void dfs(int x, int y, int step) { int next[4][2] = { {0,1} ,//向右走 {1,0},//向下走 {-1,0},//向左走 {0,-1} };//向上走 int tx, t原创 2022-03-01 14:33:39 · 431 阅读 · 0 评论 -
dfs(深度优先搜索)基本模型-c语言
dfs的解决问题的思路:先解决当下该如何做。然后再考虑下一步如何做。问题:输入一个数n,输出1~n的全排列。分析:形象化问题: 假如有编号为1,2,3的三张扑克牌和编号为1,2,3的三个盒子。 现在需要将3张扑克牌分别放到3个盒子里,每个盒子只能放一张。约定一个顺序:每当需要输出一个数时,总是先输出1,然后是2,其次是3。代码实现:#include <stdio.h>int a[10], book[10], n;//c语言的全局变量在没有赋值以前默认值是原创 2022-01-12 11:39:16 · 369 阅读 · 0 评论 -
火柴棍等式-c语言
问题:规定时限为1s。规定最多有24根火柴。分析:代码实现:#include <stdio.h>int pun(int a) { int n, sum = 0; int f[10] = { 6,2,5,5,4,5,6,3,7,6 }; while (a / 10 != 0) {//如果a不是只有一位数的话 n = a % 10;//取得个位数 sum += f[n];//取得这个个位数用了几根火柴 a = a / 10; } sum += f[a];原创 2022-01-11 10:38:50 · 951 阅读 · 0 评论 -
排序算法总结
原创 2022-01-10 13:08:00 · 101 阅读 · 0 评论 -
枚举2-c语言
问题:代码部分:nclude <stdio.h>int main() { int a[10], i, book[10],sum,total=0; for(a[1]=1;a[1]<=9;a[1]++) for(a[2]=1;a[2]<=9;a[2]++) for(a[3]=1;a[3]<=9;a[3]++) for(a[4]=1;a[4]<=9;a[4]++) for (a[5] = 1; a[5] <= 9; a[5]++)原创 2022-01-10 11:12:16 · 185 阅读 · 0 评论 -
枚举1-c语言
1.说明:枚举算法又叫穷举算法。基本思想:有序地去尝试每一种可能。2.Demo题目n3*6528=3n*8256 求n代码实现:#include <stdio.h>int main() { int i; for (i = 1; i <= 9; i++)//暴力枚举 if ((i * 10 + 3) * 6528 == (30 + i) * 8256) printf("%d", i);}输出:4...原创 2022-01-09 10:46:08 · 353 阅读 · 0 评论 -
指针链表的实现
1.说明。链表可以处理预先不知道变量个数的问题。每一个结点都由两个部分组成。左边的部分用来存放具体的数值,用一个整型变量 就可以;右边的部分存储下一个结点的地址,可以用指针来实现(也称为后继指针)。 这里我们定义一个结构体类型来存储这个结点,如下:struct node { int data; struct node *next; }; 第二个成员是一个指针,用来存储下一个结 点的地址。因为下一个结点的类型也是 struct node,所以这个指针的类型也必须是 struct n原创 2022-01-08 10:48:14 · 834 阅读 · 0 评论 -
指针小练-c语言
说明:链表比数组更加灵活。例如:有一串已经从小到大排好序的数 2 3 5 8 9 10 18 26 32。 现需要往这串数中插入 6 使其得 到的新序列仍符合从 小到大排列。如我们使用数组来实现这一操作,则需要将 8 和 8 后面的 数都依次往后挪一位。如何实现呢?1.使用指针。指针就是用来存储内存地址的,为什么要分不同类型的指针呢?因为指针变量存储的是一个内存空间的首地址(第一个字节的地址),但是这个空间占用了多少个字节,用来存储什么类型的数,则是由指针的类型来原创 2022-01-06 11:35:41 · 398 阅读 · 0 评论 -
小猫钓鱼(纸牌游戏)-c语言
小猫钓鱼(纸牌游戏)-c语言说明:星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。假如游戏开始时,小哼手中有原创 2022-01-06 10:39:56 · 4567 阅读 · 2 评论 -
回文数(栈)-c语言
说明:队列——先进先出的数据结构。 栈——后进先出的数据 结构。栈限定为只能在一端进行插入和删除操作。 生活中的例子:我们在吃桶装薯片的时候,要想吃掉最后一片,就必 须把前面的全部吃完。栈的实现 ——只需要一个一维数组和一个指向栈顶的变量 top 就可以了。我们通过 top 来对栈 进行插入和删除操作。栈的应用(回文数):首先我们需要读取这行字符串,并求出这个字符串的长度。char a[101]; int len; gets(a); len=strlen(a); ...原创 2022-01-05 11:53:17 · 1573 阅读 · 1 评论 -
解密qq号(结构体)-c语言
问题分析:https://blog.csdn.net/qq_42912469/article/details/122319163?spm=1001.2014.3001.5501代码部分:#include <stdio.h>struct queue//一个结构体{ int data[100]; int head; int tail;};int main() { struct queue q; int i,n; q.head = 1; q.tail = 1;原创 2022-01-05 11:35:23 · 525 阅读 · 0 评论 -
解密 QQ 号-队列-c语言
问题描述:分析:每次从最前面拿两个,第 1 个扔掉,第 2 个 放到尾部。 需要一个数组来存储这一串数即 int q[101],并初始化这个数组即 int q[101]= {0,6,3,1,7,5,8,9,2,4}; head 用来记录队列的队首(即第一位)。(队首删除一个数的操作是 head++;) tail 用来记录队列的队尾(即最后一位)的下一个位置。(队尾增加一个数(假设这个数是 x)的操作是 q[tail]=x;tail++;)过程:...原创 2022-01-05 11:30:33 · 697 阅读 · 0 评论 -
冒泡排序(去重)-C语言
算法说明:https://blog.csdn.net/qq_42912469/article/details/122301915?spm=1001.2014.3001.5501 先排序然后再去点重复的数字。 有n个数进行排序,只要进行n-1趟。代码部分:#include <stdio.h>int main(){ int a[1001];//支持1001个数的比较 int i, j, t, n; printf("请输入你要对多少个数字进行排序:"); scanf_原创 2022-01-05 11:07:44 · 738 阅读 · 0 评论 -
桶排序(去重)-C语言
算法说明:https://blog.csdn.net/qq_42912469/article/details/122300776代码部分:#include <stdio.h>int main(){ int a[1001], i, j, t,n; for (i = 0; i <= 1000; i++) { a[i] = 0;//数组初始化 } printf("你要输入几位数:"); scanf_s("%d", &n); for (i = 1; i原创 2022-01-05 10:59:31 · 459 阅读 · 0 评论 -
快速排序-c语言
算法说明:基准数:刚开始时取任意一个数。 作用:比基准数大的放右边,比基准数小的放左边,并将基准数归位(放到该放的位置)。如何排序? 从初始序列的两端开始探测, 先从右向左找一个比基准数小的数, 再从左向右找一个比基准数大的数, 然后交换它们。一轮探测结束的标志 当i=j时,结束一轮探测。 然后将基准数6与相遇位置的3换位置。(即将基准数归位。)...原创 2022-01-05 10:49:09 · 211 阅读 · 0 评论 -
冒泡算法(结构体)-C语言
算法说明:冒泡排序 用结构体实现分数和名字绑定,然后冒泡输出名字复杂度分析:这是 一个非常高的时间复杂度。代码部分:#include <stdio.h>struct student{ char name[21]; int sorce;};//这里创建了一个结构体用来存储姓名和分数int main() { struct student a[1000], t; int i, j,n; printf("你要输入几个人的成绩:"); sca..原创 2022-01-05 10:12:45 · 313 阅读 · 0 评论 -
冒泡排序-c语言
算法说明:冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换 过来。 如果有 n 个数进行排序,只需将 n-1 个数归位,也就是说要进行 n-1 趟操作。复杂度分析: 这是 一个非常高的时间复杂度。代码部分:#include <stdio.h>int main(){ int a[101];//支持100个数的比较 int i, j, t, n; printf("请输入你要对多少个数字进行排序:"); scanf_s..原创 2022-01-04 14:24:46 · 391 阅读 · 0 评论 -
桶排序-c语言
算法说明:将需要排的数放入一维数组a[11]。//此一维数组即为桶。若a[i]=0,则表示无数据若a[i]=1,则表示有数据,且数据的数量是1。循环输出a[i],若a[i]!=0,则输出若干次,直到a[i]=0 。复杂度分析:代码部分:#include <stdio.h>int main(){ int a[11], i, j, t; for ( i = 0; ...原创 2022-01-04 13:53:19 · 382 阅读 · 0 评论