
DFS
文章平均质量分 50
acm_JL
这个作者很懒,什么都没留下…
展开
-
n皇后问题
N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。求放置的方法个数。原创 2016-03-08 17:59:53 · 896 阅读 · 0 评论 -
zoj1047-Image Perimeters
//解题思路:在图像外面都围上一层'.',计算每个X周围'.'的个数就是周长。!!!巧妙 #include#includeusing namespace std;char map[100][100];int book[100][100];int row,col,click_r,click_c;int count,ty,tx;int diagonal[4][2] = {{1,1},原创 2016-03-14 21:42:42 · 591 阅读 · 0 评论 -
zoj2100-Seeding
/*解题思路:首先记录下'.'的个数count,接着每遍历成功一个单元格就num++,当count=num说明全部遍历成功。因为此题从(0,0)开始,但是不知道什么位置停止,所以不能将坐标作为终止条件。 */ #includeusing namespace std;char map[100][100];int book[100][100];int m,n,count=0,num=0原创 2016-03-14 19:28:27 · 823 阅读 · 1 评论 -
zoj1002-Fire Net
此题大意是在一个最大4*4网格组成的城市里,每个网格可能为“墙壁”(用‘X’表示)和“街道”(用‘.’表示)。现在在街道放置碉堡,每个碉堡可以向上下左右四个方向开火,子弹射程无限远。墙壁可以阻挡子弹。问最多能放置多少个碉堡,使它们彼此不会互相摧毁。例如输入:.X......XX......则应输出最大个数为5。//将表格从0开始编号,即从0-15. 由于我们需要对每个单原创 2016-03-14 19:27:06 · 2158 阅读 · 4 评论 -
无向图的深度优先搜索
/*深度优先遍历的主要思想是:首先以一个未被访问过的顶点作为起始顶点,沿着当前顶点的边走到未被访问的顶点。当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。 */ #includeusing namespace std;int book[100],sum,n,e[100][100];void dfs(int cur)//cur是当前所在的顶点编原创 2016-03-13 19:58:00 · 1518 阅读 · 0 评论 -
城市地图
解题思路:/*已知有5个城市和8条公路,我们可以用一个5*5的矩阵(二维数组)来存储这些信息矩阵的数值表示两个城市的距离,其中无穷大(此处用9999999代替)表示两个城市没法直接到达。同时一个城市自己和自己的距离是0. */#includeusing namespace std;int mins=9999999,book[100],n,e[100][100]; void原创 2016-03-13 21:11:17 · 512 阅读 · 0 评论 -
小鼠迷宫问题
问题描述小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。编程任务对于给定的小鼠的迷宫,编程原创 2016-03-12 21:16:42 · 3349 阅读 · 1 评论 -
炸弹人游戏_暴力枚举
先来说说题目意思吧,如图,帮助小人找到一个放炸弹的坐标,使之一颗炸弹炸死最多的敌人。 我们用字符G表示敌人,#表示墙, . 表示可以走的路,特别说明下,那种一推就倒的墙,就把它看做路吧。#include #include using namespace std; char a[20][21]; int map = 0; int sum = 0; int p,原创 2016-03-10 11:03:56 · 995 阅读 · 0 评论 -
迷宫问题
/*n行m列的迷宫,每个单元格要么是空地要么是障碍物,任务是帮助找到一条从迷宫的起点到小红的位置的最短路径,注意障碍物是不能走的,也不能走到迷宫之外。 0表示空地,1标注障碍物 */#includeusing namespace std;int n,m,p,q,mins=999999;int a[51][51],book[51][51];int next[4][2]={{0,1},/原创 2016-03-11 02:30:59 · 1859 阅读 · 0 评论 -
等式填空
1-9个数字组成一个等式()()()+()()()=()()(),求几种填法等价于往9个盒子中装9个数字问题#includeusing namespace std;int a[10],book[10],n,total;//全局变量默认初始化为0 ,book标记是否牌在手中 void dfs(int step)//step表示现在站在第几个盒子面前 { int i; if(s原创 2016-03-11 01:59:09 · 684 阅读 · 0 评论 -
全排列
全排列等价于:将N个牌放到N个盒子中#includeusing namespace std;int a[10],book[10],n;//全局变量默认初始化为0 ,book标记是否牌在手中 void dfs(int step)//step表示现在站在第几个盒子面前 { int i; if(step==n+1)//如果站在n+1个盒子面前,表示前面的n个盒子都已经放好了 {原创 2016-03-11 01:46:19 · 668 阅读 · 0 评论 -
zoj 1084channel allocation
#include#includeint n,map[27][27],used[27];int dfs(int id,int color){ int i,j,flag; for(i=1;i<=color;i++) { used[id]=i; //对结点id着色为i flag = 1;//着色成功的标志 for(j原创 2016-03-14 23:22:24 · 648 阅读 · 0 评论