- 博客(15)
- 收藏
- 关注
原创 经典迷宫问题(C++)简单DFS算法
经典迷宫问题(C++)*给出一个起点S输入地图‘.’ 代表可以走‘ ’代表墙壁不能走‘T’代表终点question:判断是否能够能从到达终点 (不要求最短路径)thinking and methods :单独考虑一个点,从上下左右四个方向进行探索,如果满足条件(不是墙壁&&未超界&&未被探索过),向这个方向探索(递归),直到满足条件或者无路可走return 进行回溯 好好理解dfs(x,y)回溯之后的下一步:vis[tx][ty]=0 “还原现场”;
2021-01-12 15:27:01 3362
原创 Prim算法- - -c语言
// Created on 小文的爱拍得.//adjvex[]数组表示 未加入生成树顶点 到生成树最小距离 的顶点 即最短距离//lowcost[]数组表示 未加入生成树顶点 到生成树的最小距离#include <stdio.h>void Prim(MGraph G){ int min,i,j,k; int adjvex[MAXVEX];//保存相关顶点下标 int lowcost[MAXVEX];//保存 未加入生成树的 顶点到生成树 的距离 lowcost[0
2022-06-12 14:25:28 441 2
原创 链表快慢指针
链表快慢指针struct ListNode* endOfFirstHalf(struct ListNode* head) { struct ListNode* fast = head; struct ListNode* slow = head; while (fast->next != NULL && fast->next->next != NULL) { fast = fast->next->next;
2022-04-17 21:44:09 632
原创 反向输出链表
###反向输出链表function print_values_in_reverse(ListNode head) if head is NOT null print_values_in_reverse(head.next) print head.val
2022-04-17 21:07:53 328
原创 翻转链表-三指针法
翻转链表struct ListNode* reverseList(struct ListNode* head){ //三指针迭代 struct ListNode* pre=NULL; struct ListNode* cur=head; while(cur){ struct ListNode* next=cur->next; cur->next=pre; pre=cur; cur=next;
2022-04-16 15:16:13 311
原创 迷宫最短路径(C++)
迷宫最短路问题接上次经典迷宫问题问题:这次迷宫问题不仅要求判断是否能够找到通路,并且要求找到最短能到达迷宫所需的步数,即最短路径问题暴力算法:对每个结点进行遍历,记录每种路径的步数;优化剪枝:当遍历步数大于ans之前第一次找到ans初始化值为无穷大,当第一次找到通路路径后,ans被第一次step替换。之后的每次路径只要比前一次step小,就会被step小的替代;剪枝:而在寻找通路的过程中,只要步数大于了前一次所找通路的step,这次寻找终止,返回下一次寻找;代码如下:#include <
2021-01-12 16:58:05 3801
原创 DFS 1-n的全排列
#include <stdio.h>#include <iostream>using namespace std;int a[101],b[101],n;void print(){ int i; for(i=1;i<=n;i++) { cout<<a[i]<<' '; } cout<<endl;}inline void dfs(int i)//现在是第i层,也可以看成是第i个盒子,把数据放到这个盒子里 { in
2021-01-12 11:32:57 152
原创 while与scanf()与cin输入搭配
while循环与scanf()与cin输入搭配1.while(scanf("%d,&n)&&n!=0)while(scanf("%d",&n&&n)while(scanf("%d",&n),n)功能:当输入n且n!=0时继续循环,当n为0时结束循环(上述三种写法都可实现此种功能)while(scanf("%d,&n)!=EOF)和while(~scanf("%d",&n)功能:当读到文件结尾时终止循环3.whil
2021-01-12 10:39:28 275
原创 单调栈
单调栈用来求一个数组中离一个数最近且小于他的数形成一个单调有序数组 ,powerby stack代码如下#include <stdio.h>#include <iostream>using namespace std;const int N=100010;int n;int stk[N],tt;int main(){ cin>>n; for(int i=0;i<n;i++) { int x; cin>>x;
2021-01-11 22:05:33 106
原创 KMP算法
KMP算法由暴力查找匹配字符优化而来的KMP字符匹配算法以及next[]数组的求解代码如下#include <stdio.h>#include <string.h>void Next(char*T,int *next){ int i=1; next[1]=0; int j=0; while (i<strlen(T)) { if (j==0||T[i-1]==T[j-1]) { i++;
2021-01-11 22:00:04 90
原创 City game 不规则区域中寻找最大符合题意面积
City game不规则区域中寻找最大符合题意面积解题思路:将图中每个点赋予其长度和宽度R F F F F FF F F F F FR R R F F FF F F F F FF F F F F FF为可行点 R为不可行点赋予后地图:0 1 2 3 4 51 2 3 4 5 60 0 0 1 2 31 2 3 4 5 61 2 3 4 5 6代码如下 1 include<bits/stdc++.h> 2 using namespace std; 3 int a
2021-01-11 21:49:52 199 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人