qq_15149257 2016-03-04 03:13 采纳率: 100%
浏览 1754
已采纳

迷宫游戏问题 求大神解答

#include"stdio.h"

void print(int front);
mgpath(int xi, int yi, int xe, int ye);
int mg[10][10]=
{ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 },{ 1, 0, 0, 0, 0, 1, 1, 0, 0, 1 },

{ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 }, { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 },{ 1, 0, 1, 0, 0, 0, 1, 0, 0, 1 },

{ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } };

int MaxSize=100;

int front=-1;

int rear=-1;

struct Qu{

int i;

int j;

int pre;}q[100];
void main(){
int M = 8;

int N = 8;

mgpath(1, 1, M, N);

}

void print(int front)

{

int k=front, j, ns=0;

printf("\n");

do

{

j = k;

k = q[k].pre;

q[j].pre = -1;

} while (k != 0);

printf("迷宫路径如下:\n");

k = 0;

while (k < 100)

{

if (q[k].pre==-1)

{

ns++;

printf("%d%3d",q[k].i,q[k].j);

if (ns % 5==0)

printf("\n");

}

k++;

}

printf("\n");

printf("队列状态");

// System.out.println("下标 i j pre");

// for(int i=0;i<=q.rear;i++)

// {

// System.out.printf("%2d %d %d %2d\n",i,q.i[i],q.j[i],q.pre[i]);

// }

}

mgpath(int xi, int yi, int xe, int ye)

{

int i, j, di;

int find=0;

rear++;

q[rear].i=xi;

q[rear].j=yi;

q[rear].pre=-1;

mg[xi][yi]=-1; // 标记入口

while (front<=rear && (!find))

{
front++;

i=q[front].i;

j=q[front].j;

        if (i==xe && j==ye)  
        { 
            find=1;  
            print(front);  
          return 1;  
        }  

        for (di=0; di<4; di++)  
        {  
            switch (di)  
            {  
            case 0:  
                i=q[front].i - 1;  
                j=q[front].j;  
                break;  
            case 1:  
                i=q[front].i;  
               j=q[front].j + 1;  
               break;  
            case 2:  
                i=q[front].i + 1;  
               j=q[front].j;  
                break;  
           case 3:  
               i=q[front].i;  
                j=q[front].j - 1;  
           }  

            if (mg[i][j]==0)  
            {  
                rear++;  
                q[rear].i=i;  
                q[rear].j=j;  
                q[rear].pre=front;  
               mg[i][j]=-1;  
            }  
        }  
   printf("NO WAY\n");
   return 0;
    }  
  • 写回答

2条回答 默认 最新

  • 小灸舞 2016-03-04 03:58
    关注

    我在编程中碰到的这个提示有以下情况:
    1、括号不匹配。(经常是在函数中添加了一段代码,如if,while分句,却忘了在结束时补上一个“}”)
    2、在头文件中定义了struct或者class,但是在}之后漏掉了分号。
    3、有#if,但是没有#endif。
    可以试试:
    1.#include "stdafx.h",添加在文件的第一句
    2.把你的光标移动到"fatal error C1004:"上面,然后按F1,MSDN会自动定位的
    3.project setting->c/c++->precompiled headers->Not using precompiled headers

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器