标题:迷宫求解的一个问题
只看楼主
wizardkid
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-4-14
 问题点数:0 回复次数:2 
迷宫求解的一个问题

最近在学习数据结构的时候,遇到一个问题。希望高手帮帮我,运行时候他提示:fatal error C1021: invalid preprocessor command 'includestdio'
执行 cl.exe 时出错.

为什么呢!??

源代码是这样的:
#includestdio.h
#includegraphics.h
#includeconio.h

typedef struct{
int x,y;
int dir;
}pos,elem;

typedef struct{
elem b, t;
int size;
}stack;

void initstack(stack s)
{
s-b=(elem)malloc(50sizeof(elem));
if(s-b){
s-t=s-b;
s-size=50;
return;
}
exit(0);
}
void push(stack s,elem e)
{
s-t=e;
s-t++;
}
void pop(stack s,elem e)
{
e=--s-t;
}
void gettop(stack s,elem e)
{
e=(s-t-1);
}
void clearstack(stack s)
{
s-t=s-b;
}
int stackempty(stack s)
{
return !(s-t-s-b);
}
int destroystack(stack s)
{
free(s-b);
free(s);
return 1;
}
int mg[10][10]={
{-1,-0,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,-0,-0,-0,-1,-0,-0,-0,-0,-1},
{-1,-0,-1,-0,-1,-0,-1,-1,-0,-1},
{-1,-0,-1,-1,-0,-0,-0,-0,-0,-1},
{-1,-0,-0,-1,-0,-1,-1,-0,-0,-1},
{-1,-0,-0,-0,-0,-0,-1,-0,-0,-1},
{-1,-0,-1,-0,-0,-0,-0,-1,-0,-1},
{-1,-0,-1,-1,-0,-0,-0,-1,-0,-1},
{-1,-0,-0,-0,-1,-0,-0,-1,-0,-0},
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}
};

void step(stack s,pos cur,stack result);
void savepath(stack s,pos cur,stack result);
void draw(int y,int x);

void step(stack s,pos cur,stack result)
{
if(stackempty(result)s-t-s-bresult-t-result-b){
for(cur-dir++;cur-dir5;cur-dir++){
setfillstyle(SOLID_FILL,15);
switch(cur-dir){
case 1
if(!mg[cur-y-1][cur-x]){
mg[cur-y][cur-x]=1;
push(s,cur);
cur-y--;
cur-dir=0;
draw(cur-y,cur-x);
return;
}
break;
case 2
if(!mg[cur-y][cur-x+1]){
mg[cur-y][cur-x]=1;
push(s,cur);
cur-x++;
cur-dir=0;
draw(cur-y,cur-x);
return;
}
break;
case 3
if(!mg[cur-y+1][cur-x]){
mg[cur-y][cur-x]=1;
push(s,cur);
cur-y++;
cur-dir=0;
draw(cur-y,cur-x);
return;
}
break;
case 4
if(!mg[cur-y][cur-x-1]){
mg[cur-y][cur-x]=1;
push(s,cur);
cur-x--;
cur-dir=0;
draw(cur-y,cur-x);
return;
}
break;
default
exit(0);
}
}
}
mg[cur-y][cur-x]=0;
setfillstyle(SOLID_FILL,0);
draw(cur-y,cur-x);
pop(s,cur);
}

void savepath(stack s,pos cur,stack result)
{
pos top=s-t;
if(stackempty(result)){
push(result,cur);
while(tops-b)
push(result,--top);
}
else if(result-t-result-bs-t-s-b){
clearstack(result);
push(result,cur);
while(tops-b)
push(result,--top);
}
}

void draw(int y,int x)
{
bar(100+15x,100+15y,115+15x,115+15y);
}

void main(void)
{
int i;
int x,y;
int gd=DETECT,gm;
stack s=NULL;
stack result=NULL;
pos cur=NULL;

initgraph(&gd,&gm,);
for(x=0;x10;x++)
for(y=0;y10;y++){
if(mg[y][x]){
setfillstyle(SOLID_FILL,3);
draw(y,x);
}
}

result=(stack)malloc(sizeof(stack));
initstack(result);
s=(stack)malloc(sizeof(stack));
cur=(pos)malloc(sizeof(pos));
initstack(s);
cur-x=1;
cur-y=0;
cur-dir=0;
push(s,cur);
cur-x=1;
cur-y=1;
cur-dir=1;
do{
if(cur-x==9&&cur-y==8)
savepath(s,cur,result);
step(s,cur,result);
}while(!stackempty(s));
if(stackempty(result))
printf(no way available);
else{
int ch=0;
printf(following is the shortest pathn);
while(!stackempty(result)){
pop(result,cur);
setfillstyle(SOLID_FILL,15);
draw(cur-y,cur-x);
if(ch5){
putchar('n');
ch=0;
}
printf((%d,%d,%d) ,cur-x,cur-y,cur-dir);
ch++;
}
}
printf(n);
destroystack(s);
destroystack(result);
free(cur);
printf(Press any key to end);
while(!kbhit());
closegraph();
}

搜索更多相关主题的帖子: 迷宫 源代码 elem int 求解 
2007-05-12 13:05
PBin
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-5-12
得分:0 
我也在想迷宫问题,
2007-05-12 13:26
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 
#includestdio.h
#includegraphics.h
#includeconio.h
头文件写错了,应该改成:
#include <stdio.h>
#include <graphics.h>
#include <conio.h>

人生重要的不是所站的位置,而是所朝的方向
2007-05-13 01:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-138772-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.122495 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved