| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 926 人关注过本帖, 1 人收藏
标题:迷宫问题很容易的了 我还是想不通
取消只看楼主 加入收藏
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
结帖率:60%
收藏(1)
 问题点数:0 回复次数:7 
迷宫问题很容易的了 我还是想不通
#include<stdio.h>
#define m 4
#define n 4
#define maxsize 10
int mg[m+2][n+2]={
    {1,1,1,1,1,1},
    {1,0,0,0,1,1},
    {1,0,1,0,0,1},
    {1,0,0,0,1,1},
    {1,1,0,0,0,1},
    {1,1,1,1,1,1}
};
struct
{
    int i;int j;int di;
}stack[maxsize],path[maxsize];
int top=-1;
int count=1;
int minlen=maxsize;
void mgpath()
{
    int i,j,di,find,k;
    top++;stack[top].i=1;stack[top].j=1;stack[top].di=-1;mg[1][1]=-1;
    while(top>-1)
    {
        i=stack[top].i;j=stack[top].j;di=stack[top].di;
       if(i==m&&j==n)
       {
        printf("%4d:",count++);
        for(k=0;k<=top;k++)
        {
            printf("(%d,%d) ",stack[k].i,stack[k].j);
            if((k+1)%5==0)printf("\n\t");
        }
        printf("\n");
       /* if(top+1<minlen)
        {
            
            for(k=0;k<=top;k++)
                path[k]=stack[k];
            minlen=top+1;
        
        }*/
        mg[stack[top].i][stack[top].j]=0;
        top--;
        i=stack[top].i;j=stack[top].j;di=stack[top].di;
    }
    find=0;
    while(di<4&&find==0)
    {
        di++;
        switch(di)
        {
        case 0:i=stack[top].i-1;j=stack[top].j;break;
        case 1:i=stack[top].i;j=stack[top].j+1;break;
        case 2:i=stack[top].i+1;j=stack[top].j;break;
        case 3:i=stack[top].i;j=stack[top].j-1;break;
        }
        if(mg[i][j]==0) find=1;
    }
    if(find==1)
    {
        stack[top].di=di;
        top++;
        stack[top].i=i;
        stack[top].j=j;
        stack[top].di=-1;
        mg[i][j]=-1;
    }
    else
    {
        mg[stack[top].i][stack[top].j]=0;
        top--;
    }
}
printf("最长路径如下:\n");
//printf("长度:   %d\n",minlen);
printf("路径:");
//for(k=0;k<minlen;k++)
//{
//    printf("(%d,%d)",path[k].i,path[k].j);
//    if((k+1)%5==0) printf("\n\t");
//}
printf("\n");
}
void main()
{
    printf("迷宫是有路径如下:\n");
    mgpath();
}
输出有四条路径。。。。我想显示那个最长的那条路径 怎么改呢!!!!!谢谢!!!!!
搜索更多相关主题的帖子: include count 
2011-04-02 20:07
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
帮我想想啊!!!!!
2011-04-03 07:53
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
版主来??????帮下了 谢谢!!!!
2011-04-03 11:07
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
做了非常感谢了。。。。。不可能没有人不会 啊!哎!!!!帮下了
2011-04-03 11:49
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
不正确的啊!!!!你得到的结果是5 也不是最长的路径啊!
2011-04-03 16:36
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
不正确啊!!!大哥
2011-04-03 16:57
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
我要的结果是长度是九  路径就是9个坐标
2011-04-03 17:08
童国顺
Rank: 1
等 级:新手上路
帖 子:70
专家分:6
注 册:2010-4-18
收藏
得分:0 
谢谢你的思想 我自己做出来了 非常感谢
2011-04-03 17:56
快速回复:迷宫问题很容易的了 我还是想不通
数据加载中...
 
   



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

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