搜索
栗原小野
千里之行,始于足下!
展开
-
POJ 1321 棋盘问题(深度优先搜索)
问题描述:输入n,k,n为n*n的棋盘格矩阵,其中#代表可放棋子位置,k为要放的棋子数,棋子不能出现在同行同列,求摆放的方案数。解题思路:逐行放棋子(保证了不会在同行),每一行从第0列开始放棋子,不和前面的同列则为可行,从下一行开始递归。代码如下:#include<iostream>#include<string.h>using namespace std...原创 2019-04-16 21:06:27 · 163 阅读 · 0 评论 -
【搜索】hdu2616 Find a Way
题意:给出两个初始地点Y,M,还有几个终点@。要求两个初始点到这些终点的最少步数之和的最小数。解题思路:两遍bfs,给kfc所在地加一个量用res[i][j][k]表示,k=0是Y到(i,j)的最少步数,k=1是M到(i,j)的最少步数。最后遍历地图找到和最少的。代码如下:#include<cstdio>#include<queue>#include&...原创 2019-08-07 22:45:12 · 80 阅读 · 0 评论 -
【搜索】poj3414倒水问题
题意:给出a,b两个水杯的容量,和一个要达到的水量c。总共3种操作,两个杯子那就是六种。要求通过这六种操作来时两个杯子其中有一个水量为c的最少操作数。解题思路:这道题用到的是广搜bfs,水量(i,j)代表一个点,通过这六种操作可以变成另一个点,那么这两个点之间就是有路的,每个点有没有访问过用邻接矩阵vis【i】【j】存储。代码如下:#include<iostream>#...原创 2019-07-31 14:41:54 · 104 阅读 · 0 评论 -
【搜索】poj3126Prime Path
题意:给出两个四位素数,修改第一个数,每次只能改掉四位中的一位并且改后仍是素数,求从第一个四位数改成第二个四位数最少的修改次数。解题思路:这里的每一个四位数都相当于一个点,如果一个四位数u改掉一位数字成另一个四位数v,即u->v单向有路,如果四位数是素数,那就是这个点可以跳,否则不行。剩下的用广搜数步数就好了。判断素数可以先打表:void prime(){ memset(i...原创 2019-07-30 22:55:43 · 74 阅读 · 0 评论 -
【搜索】filptile poj3279
题意:给出黑白棋盘格,每一次翻转能使自己和上下左右的格子黑白反转,求出为了使棋盘格全为白色的最少翻转数。解题思路:二进制枚举第一行的所有2*m种 01组合,进行dfs计数,打印计数最少的那一次的每一个格子的翻转数。代码:#include<iostream>#include<cstdlib>#include<queue>#define N 20...原创 2019-07-30 10:37:39 · 98 阅读 · 0 评论 -
【图论】floyd求最短路径 hdu2544
floyd算法可以解决有向图,负权的问题 但时间复杂度为O(n^3)用到了动态规划思想:dpi,j,k=min(dp i,j,k-1 , dpi,k,k-1+dpk,j,k-1)代码如下#include<iostream>#include<algorithm>#include<cstring>using namespace...原创 2019-05-16 00:33:18 · 72 阅读 · 0 评论 -
深搜(联通块)——Oil Deposit
题意:和counting sheep一样,只是这里要搜索八个方向。代码如下:#include<bits/stdc++.h>using namespace std;int m, n;char a[105][105];int vis[105][105];void dfs(int r, int c, int index){ if (r < 0 || r >...原创 2019-05-01 20:58:26 · 180 阅读 · 0 评论 -
深搜(联通块)——Counting sheep
Counting SheepTime Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 38 Accepted Submission(s) : 27Font: Times New Roman | Verdana | GeorgiaFon...原创 2019-05-01 20:01:05 · 266 阅读 · 0 评论 -
八皇后问题——紫书(刘汝佳)
解题思路:任意两个皇后不能出现在同行同列及同对角线,可以直接考虑每一行放一个皇后,依次往下进行。1 1 第1行的皇后放在0,1列都会和第0行的皇后攻击,所以直接到了第2列,当第0和1行这么放置皇后时,我们发现下一行无论放在哪一列皇后都会相互攻击,所以...原创 2019-04-14 19:43:28 · 955 阅读 · 0 评论 -
【搜索】hdu1495非常可乐
题意:给三个杯子,容量分别为S,M,N。初始S满,后两个为空。两两之间可以倒水,要求到最后有两个杯子中的水量相等时最少的倒水次数。解题思路:三个杯子每个状态为一个顶点,构成一张图,用三元邻接矩阵map[i][j][k]表示。每次倒水有两种情况:a给b 之后1.a全给了b,2.b满了但a还有剩余。一开始我感觉这样两两倒水有六种组合,实现起来会很麻烦。后来看了大神的发现可以用两个for循环,i,j...原创 2019-08-07 21:01:52 · 84 阅读 · 0 评论