C语言广度优先搜索,代码

01111111(只走0不走1,从左上角出发)
00001111
10101011
10100011
10111111
10000000

8*6
要走12步

#include <stdio.h>
static char map[][20]={
    "1111111111",
    "1011111111",
    "1000011111",
    "1101010111",
    "1101000111",
    "1101111111",
    "1100000001",
    "1111111111",
};
static int min=100;
void func(int s, int i, int j)
{
    int next[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
    int n;
    if(i==6&&j==8)
    {
        if(s<min)
            min=s;
        return;
    }
    for(n = 0; n < 4; n ++)
    {
        if(map[i+next[n][0]][j+next[n][1]] == '0')
        {
            map[i+next[n][0]][j+next[n][1]] = '1';
            func(s+1, i+next[n][0], j+next[n][1]);
            map[i+next[n][0]][j+next[n][1]] = '0';
        }
    }
}
int main()
{
    func(0,1,1);
    printf("%d\n",min);
    return 0;
}
温馨提示:内容为网友见解,仅供参考
无其他回答

广度优先搜索C语言算法
广度优先搜索算法,是按层遍历各个结点,以求出最短或最优的解,常用于计算路径的最短距离,和最佳通路。例如:迷宫的最短路径计算,推箱子的移动最小步数等小游戏,都是按广度搜索来进行的。这个算法是教程中很经典的,有很多例子和代码。你可以好好研究!如下是一段迷宫的最佳路径求解算法。include ...

求一个C语言编程,图的遍历,深度优先和广度优先搜索的程序。要浅显易懂...
\/\/图G中查找元素c的位置 int Locate(Graph G,char c){ for(int i=0;i<G.vexnum;i++)if(G.vexs[i]==c) return i;return -1;} \/\/创建无向网 void CreateUDN(Graph &G){ int i,j,w,s1,s2;char a,b,temp;printf("输入顶点数和弧数:");scanf("%d%d",&G.vexnum,&G.arcnum...

图的深度\/广度优先遍历C语言程序
void DFS(GRAPH g,int qidian,int mark[])\/\/从第qidian个点出发深度优先周游图g中能访问的各个顶点 { int v1;mark[qidian]=1;printf("%c ",g.vexs[qidian]);for(v1=0;v1<g.num;v1++){ if(g.arcs[qidian][v1]!=0&&mark[v1]==0)DFS(g,v1,mark);} } \/***6。图的...

...和邻接矩阵数据结构的定义、创建;图的深度优先遍历、广度优先...
next[i]=first[x]; first[x]=i; en[

数据结构(C语言版) 图的遍历和拓扑排序
数据结构(C语言版) 图的遍历和拓扑排序 任务:给定一个有向图,实现图的深度优先,广度优先遍历算法,拓扑有序序列,并输出相关结果。功能要求:输入图的基本信息,并建立图存储结构(有相应提示),输出遍历序列,然后进行拓... 任务:给定一个有向图,实现图的深度优先, 广度优先遍历算法,拓扑有序序列,并输出相关结果。

...2验证图的深度优先、广度优先遍历算法 3验证最短路径
\/\/ Description: 深度优先搜索并输出 \/\/ Input: Graph - 图; n - 图的结点的个数; StartEdge — 开始的结点;\/\/ Output: Console下输出遍历的顺序 \/\/ Tags: 递归调用 _dfs过程、回溯算法 void _dfs(Edge **&graph, bool *visited, int n, int index);void DFS(Edge **&graph, int n...

用c语言做连连看其中方案图块的链接判断,具体如何实现?
在C语言中,可以使用二维数组表示连连看游戏界面,每个数组元素表示一个方块。为了方便判断方块之间的链接关系,可以给每个方块添加一个编号或者标记。在实现方块链接判断时,可以采用广度优先搜索(BFS)算法。具体实现过程如下:首先选中两个方块,假设它们的编号分别为a和b。以方块a为起点,使用BFS算法搜索...

八皇后问题以及TC中如何在查看结果时翻页...
是翻页查看的,按任意键翻到下一页。而且这段程序中包含了3种不同的方法(分别对应3个函数solve1(),solve2()和solve3()),这三种方法分别是:回溯法,一般的深度优先搜索方法,广度优先搜索的方法。程序如下:include<stdio.h> include<math.h> include<conio.h> include<dos.h> define WAY 3 ...

八个C语言项目毕业后从小白到大牛
代码量:800行 实现功能:停车、找车、缴费、离开、路线规划。适合人群:有C语言和链表、栈、队列基础。涉及技术:指针、数组、链表、队列、广度优先搜索。五、智能WiFi摄像头 难度系数 代码量:1500行 语言: C语言 实现功能:图像数据采集、APP显示、远程控制适合人群:有C语言、Linux、网络基础,属于综合性...

C语言中运算符的优先级
在C语言的神秘运算符世界里,15级的优先级金字塔引领着代码的运算节奏。从高高在上的圆括号()、方括号([])、箭头(->和点(.),它们如同指挥家的指挥棒,引领着运算的旋律。单目运算符则像优雅的独奏者,自右向左翩翩起舞。接着是算术和移位运算,如同交响乐团中的铜管和木管,乘除加减和移位操作在...

相似回答