数据结构c++语言-数据结构C++语言解决迷宫问题

问题描述

数据结构C++语言解决迷宫问题

标题: 迷宫问题
时 限: 100000 ms
内存限制: 100000 K
总时限: 3000 ms
描述: 迷宫问题

迷宫是一个二维矩阵,其中1为墙,0为路,3为入口,4为出口.要求从入口开始,从出口结束,按照 下,左,上,右 的顺序来搜索路径.
输入: 迷宫宽度w 迷宫高度h
迷宫第一行
迷宫第二行
...
迷宫第h 行
输出: 入口横坐标1 入口纵坐标1
横坐标2 纵坐标2
横坐标3 纵坐标3
横坐标4 纵坐标4
...
横坐标n-1 纵坐标n-1
出口横坐标n 出口纵坐标n
输入样例: 8 10
1 1 1 1 1 1 1 1
1 0 1 1 0 1 0 1
1 0 1 0 0 1 0 1
1 1 0 3 1 0 1 1
1 0 0 1 0 0 4 1
1 0 0 0 0 1 1 1
1 0 1 0 0 1 0 1
1 0 1 0 0 0 1 1
1 1 1 1 0 0 0 1
1 1 1 1 1 1 1 1
输出样例: 3 3
2 3
2 4
2 5
3 5
3 6
3 7
4 7
4 6
4 5
4 4
5 4
6 4

解决方案

数据结构:栈和队列-迷宫问题求解
数据结构例程——迷宫问题(用队列)

解决方案二:

这个编程未完成,等待中

解决方案三:

代码如下:

 #include<iostream>
using namespace std;

int main()
{
    //矩阵初始化
    int **migong;
    int h, w;
    int m, n;
    cout << "请输入迷宫高度h和迷宫宽度w:" << endl;
    cin >> h >> w;
    migong = new int *[h];
    for (int i = 0; i < h ; i++)
    {
        migong[i] = new int[w];
    }
    for (m = 0; m < h ; m++)
    {
        for (n = 0; n < w ; n++)
        {
            cin>>migong[m][n] ;
        }
    }
    //输出矩阵
    for (m = 0; m < h; m++)
    {
        for (n = 0; n < w; n++)
        {
            cout << migong[m][n] << "    ";
        }
        cout << endl;
    }
    int temp = 0;
    if (h >= w)
        temp = h;
    else
        temp = w;
    int *path_row = new int;//通行路径的行
    int *path_column = new int;//通行路径的列
    for (int i = 0; i < temp; i++)
        path_row[i] = path_column[i] = 0;
    int row = 0;
    int column = 0;
    int count = 0;
    do
    {
        column = 0;
        do
        {
            switch (migong[row][column])
            {
            case 3:
                cout << "入口坐标为:" << "(" << row << "," << column << ")" << endl;
            }
            switch (migong[row][column])
            {
            case 0:
                path_row[count] = row;
                path_column[count] = column;
                cout << "(" << row << "," << column << ")" << endl;
                count++;
                break;
            case 1:
                break;
            }
            switch (migong[row][column])
            {
            case 4:
                cout << "出口坐标为:" << "(" << row << "," << column << ")" << endl;
            }
            column += 1;
        } while (column < w);
        row += 1;
    }while (row < h);
    for (m = 0; m < h ; m++)
    {
        delete[] migong[m];
    }
    delete migong;
    delete path_row;
    delete path_column;
    system("pause");
    return 0;
}

不过运行提示出错,我也弄不懂哪儿出了错,待我问问去……

时间: 2024-09-17 03:50:29

数据结构c++语言-数据结构C++语言解决迷宫问题的相关文章

《数据结构与算法:Python语言描述》一1.4数据结构

1.4数据结构 从程序输入和输出的角度看,用计算机解决问题,可以看作实现某种信息表示形式的转换.如图1.5所示,把以一种形式表示的信息(输入)送给程序,通过在计算机上运行程序,产生出以另一种形式表示的信息(输出).如果: 具体的"信息表示A"表达了需要求解的某个问题的实例. 得到的"信息表示B"表达了与这个实例对应的求解结果. 那么就可以认为,这个程序完成了该问题实例的求解工作. 为了能用计算机处理与问题有关的信息,就必须采用某种方式表示它,并将相应表示送入计算机.

数据结构 c语言-C语言数据结构课程设计实现一个集合数据结构

问题描述 C语言数据结构课程设计实现一个集合数据结构 题目:设计并实现一个集合数据结构Set.一个集合中没有重复元素,支持下列运算: boolean add(E o) 如果 set 中尚未存在指定的元素o,则添加此元素. boolean addAll(Set c) 如果 set 中没有指定集合c中的所有元素,则将其添加到此 set 中. void clear() 移除 set 中的所有元素. boolean contains(E o) 如果 set 包含指定的元素o,则返回 true. bool

c语言数据结构问题 代码相似性度量

问题描述 c语言数据结构问题 代码相似性度量 我的思路:对要进行比较的所有代码段进行词法分析,并转化为特定的标记(token)串,自己制定一个转换规则.接着,通过两两比较标记(token)串来确定代码之间的相似性,并由此确定代码之间抄袭的程度. 将这两个代码分别转换为token串后,基于算法RKR-GST( running-karp-rabin greedy-string-tiling)算法思想,循环求取两个标记串中未被匹配部分的最大公共子串,将其用空格代替,并根据公式求出两个token串A,B

c语言-C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了

问题描述 C语言,数据结构,树的孩子兄弟表示法,程序一切正常,但是有个问题不太懂了 我的困惑就是在creatTree函数中,参数是(LTNode &T),也就是说是struct node**型指针,但是在递归中,也就是在creatTree(T->firstchild)中,T->firstchild应该是struct node*型指针,为什么依然可以运行,且运行正确? printfTree()函数也是一样,我就不再多写了 而在main()函数中,我也只创建了LTNode T;在调用的时候

c语言数据结构,求算法

问题描述 c语言数据结构,求算法 把一个单链表LA中的奇数项和偶数项分开,分别放在两个单链表LB,LC中(要求利用原空间,头结点空间可另外开辟) 解决方案 (C语言-数据结构与算法)还原二叉树数据结构和算法系列 - c语言归并排序法 解决方案二: 对LA进行遍历,依次把LA中的项加入LB,LC中.依靠修改原LA中项的指针实现. 解决方案三: //输入时以-1结束#include <stdio.h>#include <stdlib.h>struct node{ int data; s

数据结构c语言-数据结构 C语言版 二叉树

问题描述 数据结构 C语言版 二叉树 先根次序访问,后根次序访问,与先序遍历,中序遍历,后序遍历,有什么区别与联系啊 解决方案 这是数据结构里的基础知识啊童鞋!树不是有左子树.右子树和根吗,遍历都是先左子树后右子树,先序.中序和后序是相对于根来说的,所以先根次序.后根次序就是先序.后序遍历的意思,先序遍历:根-左子树-右子树中序遍历:左子树-根-右子树后序遍历:左子树-右子树-根 解决方案二: 先根次序访问就是先序后根次序访问就是后续 对于一个最简单的二叉树abc先序就是先访问a,顺序为abc中

adl语言-ADL语言 数据结构 几种符号问题

问题描述 ADL语言 数据结构 几种符号问题 ADL语言里 X / div 有什么区别呢 求各位指教!!! 解决方案 adl语言本质上说是一种伪代码.它的目的不是建立一种编程语言,而是用一种类似编程语言的方式编写给人看的文档.所以表达上不是很严格,就你说的运算符,或者直接用英文单词缩写,都可以.没区别.

C语言数据结构:表达式求值代码问题

问题描述 C语言数据结构:表达式求值代码问题 要求允许小数,过滤空格,可以+ - * /和求指数 #include #include #include #include #define true 1 #define false 0 #define OPSETSIZE 8 //运算符集合数为8 char OPSET[OPSETSIZE] = { '+', '-', '*', '/', '(', ')', '#', '^' }; unsigned char Prior[8][8] = { /****

c语言-@C语言数据结构大神:顺序栈求n!。13行的错误怎么修改?为啥说我定义栈错误?

问题描述 @C语言数据结构大神:顺序栈求n!.13行的错误怎么修改?为啥说我定义栈错误? # include<stdio.h> # include<stdlib.h> # define Max_Size 50 typedef struct{//typedef是小写开头! //注意此处的top是整形指针 int data[Max_Size]; int top; }SeqStack,*PSeqStack; void Init_SeqStack(PSeqStack S) { S->