qq_15149257
2016-03-04 03:13
采纳率: 100%
浏览 1.8k

迷宫游戏问题 求大神解答

#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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • qq_15149257 2016-03-04 03:14

    每次都是提示 fatal error C1004: unexpected end of file found

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题