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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘