基于堆栈实现的迷宫问题c语言编程

在绘制c#界面时,底部重绘每次都会清除画布背景,然后全部重绘,这是导致闪烁的主要原因。所以消息发送函数操作过载,消息被禁止。代码如下:

保护覆盖无效WndProc(参考消息m)

{

If (m.Msg == 0x0014) //禁用清除后台消息。

返回;

基地。WndProc(ref m);

}

详细说明:C语言迷宫题,用栈来做。 # include stdio . h # include mem . h void main(){ int a[100][100];//0:阻塞1:通道2:完成-1:已访问;int b[10000][2];int m=0,n = 0;int sttop = 0;int i,j,k,l;memset(a,0,sizeof(a));printf("请输入m,n:");scanf("%d%d ",m,n);printf("输入开始:");scanf("%d%d ",I,j);b[0][0]= I-1;b[0][1]= j-1;printf("输入地图:\ n ");for(I = 0;im;I)for(j = 0;jn;j ) { scanf("%d ",a[I][j]);} printf("输入终点:");scanf("%d%d ",I,j);a[I-1][j-1]= 2;I = b[sttop][0];j = b[sttop][1];a[I][j]=-1;while (sttop!=-1){ if(i0){//能起来吗?if(a[I-1][j]= = 1){ a[-I][j]=-1;b[sttop][0]= I;b[sttop][1]= j;继续;} else if(a[I-1][j]= = 2){ b[sttop][0]=-I;b[sttop][1]= j;打破;} } if(im-1){//能up?if(a[I 1][j]= = 1){ a[I][j]=-1;b[sttop][0]= I;b[sttop][1]= j;继续;} else if(a[I 1][j]= = 2){ b[ST top][0]= I;b[sttop][1]= j;打破;} } if(j0){//可左?if(a[I][j-1]= = 1){ a[I][-j]=-1;b[sttop][0]= I;b[sttop][1]= j;继续;} else if(a[I][j-1]= = 2){ b[sttop][0]= I;b[sttop][1]=-j;打破;} } if(JM-1){//能up?if(a[I][j 1]= = 1){ a[I][j]=-1;b[sttop][0]= I;b[sttop][1]= j;继续;} else if(a[I][j 1]= = 2){ b[ST top][0]= I;b[sttop][1]= j;打破;} } sttop-;} if(ST top 1){ for(I = 0;isttopi ) printf("(%d,%d)-",b[i][0] 1,b[I][1]1);printf("(%d,%d)\n ",b[i][0] 1,b[I][1]1);} else printf("不能到达终点!\ n ");返回;}对于非嵌套法制作的栈,起点和终点的数据输入规则如下:先输入m ^ n(m为行数,n为列数),再输入起点(左上角为(1,1)(前一行号,后一列号),再输入“1 ^ 1”(不带引号),以此类推), 然后输入地图(0为遮挡,1为路径)(无论输入0还是1都默认为起点),然后输入终点(规则与起点相同)回车得到结果。 结果的表达式是(x,y)-(x,y)(坐标为1,1为左上角)或者不能到达终点!如果您提出其他修改,您可以做任何您想做的事情(规模m,n=100,对于堆栈来说太大了)

迷宫问题c语言,数据结构教程 你好

地主

我很幸运能看到你的问题。

但是很遗憾,还没有人回答你的问题。也许你现在已经在别的地方找到了答案,那么恭喜你。

你这个问题我帮不了你!

可能你问的问题有点专业。或者别人没有遇到过或者接触过你的问题,所以帮不了你。建议你去相关论坛求助,那里一般人比较多,比较热情,可能会帮你快速解决问题。

希望我的回答也能帮到你!

祝你好运。

中国新年就要到了,

最后,祝您全家幸福,健康,快乐每一天!

用堆栈实现C语言中的迷宫问题 #包括

#定义MAXSIZE 100

使用命名空间std

结构堆栈{

int iway

int jway

int dire

};

栈迷宫[MAXSIZE];

int top

int map[14][28]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

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

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

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

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

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

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

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

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

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

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

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

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

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

void findway(int xS,int yS,int xE,int yE)

{

top = 0;

迷宫[顶部]。iway = xS

迷宫[顶部]。jway = yS

map[xS][yS]=-1;

int i,j,di,find

while(前1名)

{

I =迷宫[顶]。iway

j =迷宫[顶部]。jway

di =迷宫[顶部]。可怕;

if(i==xEj==yE)

{

cout " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ";

cout " path " ":" endl;

cout "("迷宫[0]。iway”,“迷宫[0]。jway ")";

for(int val = 1;valtop 1;val)

{

cout("maze[val].iway”,“迷宫[瓦尔]。jway ")";

if((val 1)%5==0)

coutendl

}

coutendl

cout " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ";

返回;

}

find = 0;

while(find==0di4)

{

di;

开关(di)

{

案例(0):I =迷宫[上]。iway

j =迷宫[顶部]。j way 1;

打破;

情况(1):I =迷宫[上]。iway

j =迷宫[顶部]。j way-1;

打破;

情况(2):I =迷宫[上]。iway 1;

j =迷宫[顶部]。jway

打破;

情况(3):I =迷宫[上]。iway-1;

j =迷宫[顶部]。jway

打破;

}

if(map[i][j]==0)

{

find = 1;

}

}

if(find==1)

{

迷宫[顶部]。dire = di

顶;

迷宫[顶部]。iway = I;

迷宫[顶部]。jway = j

迷宫[顶部]。dire =-1;

map[I][j]=-1;

}

其他

{

地图[迷宫[顶部]。iway][迷宫[上]。j way]= 0;

top-;

}

}

}

int main()

{

for(int I = 0;i14I) //迷宫图形输出

{

for(int j = 0;j28j)

{

if(map[i][j]==1)

cout "■";

else cout“□”;

}

coutendl

}

int xStart,yStart,xEnd,yEnd

Cout "请输入迷宫起点的坐标,用空格隔开(左上角坐标为(0,0)):";

cinxStartyStart

Cout "请输入迷宫终点的坐标,用空格隔开(右上角坐标为(13,27)):";

cinxEndyEnd

findway(xStart,yStart,xEnd,yEnd);

返回0;

}

满意,请采纳!

相关文章

发表新评论