迷宫探路III(最短路径)

    将从迷宫入口到各点的最短路近的集合看作一棵树。用广度遍历
  的方法即可找到出口的最短路近。本程序算法思想来源于求图上一点
  到其余各点最短路近的Dijkstra算法。

 /* 迷宫探路III(最短路径)*/
/* DIJKSTRAMAZE.C */
/* 2003-8-26 */
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <graphics.h>
#define N 22
#define M 22
int bg[M][N];
int aa[M][N];
struct pace{
    int pre;
    int x;
    int y;
    int ri;
    int rj;
}road[M*N];
struct pace bestroad[M*N];

void makebg(int,int);
void drawbg(int[][],int,int,int,int,int);
void drawman(int,int,int);
void rect(int,int,int,int);

void main(){/* main()开始 */
int step=20;
int len=10;
int size=20;
int x=0,y=0;
int i=0,j=0;
int gdriver=DETECT,gmode;
char ch;
int direc;
int routelen=0;
int dj[]={-1,1,0,0};
int di[]={0,0,-1,1};
int begin;
int end;
int k;
int t;
int num;
int suc;
int cnt;
int x0;
int y0;
int le;
int tmp;
makebg(M,N);
/*  registerbgidriver(EGAVGA_driver);
 initgraph(&gdriver,&gmode,"c:\turboc2");*/
 initgraph(&gdriver,&gmode,"c:\tc20\bgi");
cleardevice();
setwritemode(XOR_PUT);
settextstyle(1,0,3);
setcolor(GREEN);
outtextxy(100,180,"DIJKSTRA MAZE");
setcolor(BLUE);
setfillstyle(LINE_FILL,BLUE);

/*drawbg(bg,M,N,size,0,0);*/
drawbg(aa,M,N,size,0,0);
setcolor(WHITE);
x+=len;y+=len;
drawman(x,y,len);
x0=x;y0=y;
/* 电脑控制 */
i=j=0;
aa[0][0]=1;
begin=0;
end=0;
road[0].ri=0;
road[0].rj=0;
road[0].x=x0;
road[0].y=y0;
road[0].pre=-1;
le=1;
suc=0;
while(!suc){
cnt=0;
le++;
for(k=begin;k<=end;k++){
    for(t=0;t<4;t++){
        x=road[k].x+dj[t]*step;
        y=road[k].y+di[t]*step ;
        i=road[k].ri+di[t];
        j=road[k].rj+dj[t];
        if(i<M&&i>=0&&j<N&&j>

时间: 2024-09-07 23:13:19

迷宫探路III(最短路径)的相关文章

实例编程:迷宫探路III

将从迷宫入口到各点的最短路近的集合看作一棵树.用广度遍历的方法即可找到出口的最短路近.本程序算法思想来源于求图上一点到其余各点最短路近的Dijkstra算法. /* 迷宫探路III(最短路径)*/ /* DIJKSTRAMAZE.C */ /* 2003-8-26 */ #include <stdlib.h> #include <time.h> #include <math.h> #include <stdio.h> #include <graphic

实例编程:迷宫探路II

对<迷宫探路>做了一点改进.小人在行走过程中不走回头路,即不重复经过同一点. /* crazymaze.c*/ /* 2003-8-26 */ #include <stdlib.h> #include <time.h> #include <math.h> #include <stdio.h> #include <graphics.h> #define N 22 #define M 22 #define MAXLEN 200; int

迷宫探路II

      对<迷宫探路>做了一点改进.小人在行走过程中不走回头路, 即不重复经过同一点.                      /* crazymaze.c*//* 2003-8-26 */#include <stdlib.h>#include <time.h>#include <math.h>#include <stdio.h>#include <graphics.h>#define N 22#define M 22#defi

迷宫探路IV(递归算法)

/* 迷宫探路(recursive)*//* recursivemaze.c *//* 2003-10-16 */#include <stdlib.h>#include <time.h>#include <math.h>#include <stdio.h>#include <graphics.h>#define N 22#define M 22#define MAXLEN M*Nint bg[M][N];int aa[M][N];struct p

实例编程:迷宫探路I

曾经听说过一个走迷宫的诀窍:顺着墙沿一侧走. (一直沿左侧或一直沿右侧).本程序实现了这一 思想,小人一直沿左侧走. 迷宫是随机生成的. 开始时,按数字 1 键进入人工控制模式:按w,s, a,d分别代表上,下,左,右方向. 开始时,按除数字 1 以外的任意键进入自动模式: 小人由电脑控制. 按 Q键结束程序. /* Name: maze.c Author: zhuqing Description: 迷宫探险 Date: 28-08-03 10:15 Copyright: */ #include

迷宫探路

    曾经听说过一个走迷宫的诀窍:顺着墙沿一侧走.(一直沿左侧或一直沿右侧).本程序实现了这一思想,小人一直沿左侧走.    迷宫是随机生成的.    开始时,按数字 1 键进入人工控制模式:按w,s, a,d分别代表上,下,左,右方向.    开始时,按除数字 1 以外的任意键进入自动模式:小人由电脑控制.     按 Q键结束程序. /*  Name:    maze.c  Author:      zhuqing  Description:     迷宫探险   Date: 28-08-

数据结构演示(tc版)

/*前段时间写的几个tc版演示,其中一些程序在与郭翠英老师合作的<<c语言课程设计案例精编>>中用到,所以源码也就不能随便发布了,在这里主要把程序主题列出来了,因为没经验,所以没用建立工程的方法写这个程序,以后如果还有机会用tc写稍微大点的程序,应该要注意这点了.用tc来练习这些程序也是对我上学期学的数据结构复习了下,个人感觉写类似的程序一方面能提高学习兴趣,一方面也能多动下脑子.还有别的什么有趣的演示大家可以想想! */ /*上海工程技术大学 02211 朱昀*/ #includ

模拟迷宫

#include<stdio.h> #define ROW 8 #define COLUMN 8 #define STEP ROW*COLUMN /*ROW表示迷宫的行数,COLUMN表示迷宫的列数,STEP表示队列的容量*/ //定义一个用来记录迷宫探路的队列 struct StepQueue { int x,y;     int PreStep; }StepQ[STEP],tmpStepQ[STEP]; //定义一个结构体用来表示迷宫中的移动方向,一共有8种方向 struct MoveD

Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了

本文讲的是Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了, 这是我为了从 web 开发者(自学.非计算机科学学位)蜕变至 Google 软件工程师所制定的计划,其内容历时数月. 这一长列表是从 Google 的指导笔记 中萃取出来并进行扩展.因此,有些事情你必须去了解一下.我在列表的底部添加了一些额外项,用于解决面试中可能会出现的问题.这些额外项大部分是来自于 Steve Yegge 的"得到在 Google 工作的机会&quo