DFS
豫彧
业精于勤荒于嬉,行成于思毁于随。
展开
-
所有子串的全排列(dfs模板)
所有子串的全排列输出一个字符串里所有的子串的全排列#include <bits/stdc++.h>using namespace std;char s[10] = {'a','b','c','d','e','f','g'};bool vis[10];char ans[10];int i;void dfs(int n){ if(n == i){ for(int k = 0;k < i;k++){ pr原创 2021-04-05 21:21:56 · 285 阅读 · 0 评论 -
记忆化搜索 滑雪VIJOS-P1011
Description顺治喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你。顺治想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9顺治可以从某个点滑向上下左右相邻四个点之一,当且仅原创 2020-08-15 20:12:16 · 171 阅读 · 0 评论 -
dfs 从m个数选n个得到各种运算最大最小
用深度优先搜索在m个数里选择n个进行操作Description:包含一个整数,从n个数中选取任意m个数进行异或得到的最大值Input8 21 2 3 4 5 6 7 8Output151 ^ 1 =1,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0,仍何数亦或 0都为这个数。选取7和8进行异或,得到最大的值15。#include<bits/stdc++.h>using namespace std;long long a[12];long long sum,t原创 2020-08-14 11:53:12 · 417 阅读 · 0 评论 -
dfs 1~9全排列
使用DFS,输入n,输出1~n的所有全排列#include<stdio.h>int n,a[10],book[10];void dfs(int step)//step 表示当前在第几个位置{ int i; if(step==n+1)//如果step==n+1表示前n个数字已经放好 { //输出 for(i=1;i<=n;i++) printf("%d",a[i]); printf("\n"); } for(i=1;i<=n;i++) i原创 2020-08-04 16:52:53 · 255 阅读 · 0 评论 -
迷宫二T1596 bfs与dfs
一道经典迷宫题目:使用bfs与dfs都可以解,bfs时间复杂度高一点非常非常好的题Description>第一行输入两个整数n和 m,表示这是一个 n×m 的迷宫。接下来的输入一个 n 行 m 列的迷宫。其中 ‘S’ 表示蒜头君的位置,’*‘表示墙,蒜头君无法通过,’.‘表示路,蒜头君可以通过’.'移动,'T’表示迷宫的出口(蒜头君每次只能移动到四个与他相邻的位置——上,下,左,右)。输出蒜头君逃出迷宫的最少步数,如果蒜头君无法逃出迷宫输出 −1。Inpot>3 4S**.…*.原创 2020-07-27 22:45:55 · 293 阅读 · 2 评论 -
N皇后问题 HDU - 2553详解
N皇后问题 HDU - 2553DFS经典问题八皇后问题:我使用的是DFS、回溯、递归法题目:在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。In Put共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。输入:1 8 5 0Out Put共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。输出:原创 2020-06-27 21:28:24 · 229 阅读 · 0 评论