| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2487 人关注过本帖
标题:各位大神帮我看下,一个马踏遍的程序,为啥后面运行时,程序自动关闭
只看楼主 加入收藏
朽神
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-6-17
收藏
 问题点数:0 回复次数:1 
各位大神帮我看下,一个马踏遍的程序,为啥后面运行时,程序自动关闭
#include
#define N 8
typedef struct
{
    int i1;
    int j1;
    int di1;
}Box;
typedef struct
{
    int top;
    Box data[N*N];
}sqstack;
bool hourse(int b[N][N],int x,int y)
{
    int i,j,k=0,di,find;
    sqstack st;
    st.top=-1;
    st.top++;
    st.data[st.top].i1=x;//保存行号
    st.data[st.top].j1=y;//保存列号
    st.data[st.top].di1=-1;//保存所走的路径
    b[x][y]=k;
    while(st.top>-1)
    {
        i=st.data [st.top].i1;
        j=st.data [st.top].j1;
        di=st.data[st.top].di1;
        find=0;
        if(b[N][N]=N*N)
            return true;
        while(di<8&&find==0)
        {
            di++;
            switch(di)
            {
            case 0:i=st.data[st.top].i1-2;
                   j=st.data[st.top].j1-1;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 1:i=st.data[st.top].i1-2;
                   j=st.data[st.top].j1+1;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 2:i=st.data[st.top].i1-1;
                   j=st.data[st.top].j1+2;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 3:i=st.data[st.top].i1+1;
                   j=st.data[st.top].j1+2;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 4:i=st.data[st.top].i1+2;
                   j=st.data[st.top].j1+1;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 5:i=st.data[st.top].i1+2;
                   j=st.data[st.top].j1-1;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 6:i=st.data[st.top].i1+1;
                   j=st.data[st.top].j1-2;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            case 7:i=st.data[st.top].i1-1;
                   j=st.data[st.top].j1-2;
                   if(i<0||i>=N||j<0||j>=N)
                        di++;
                    else break;
            }
            if((b[i][j])==0)find=1;//找到下一个可走的方块
        }
        if(find=1&&di<8)
        {
            st.data[st.top].di1=di;
            st.top++;
            st.data[st.top].i1=i;
            st.data[st.top].j1=j;
            k++;
            b[i][j]=k;
        }
        else
        {
            b[st.data[st.top].i1][st.data[st.top].j1]=0;
            k--;
            st.top--;
        }

    }
    return false;
}
void main()
{
    int i,j,h,t;
    bool flag;
    int Board[N][N]={0};
    printf("输入马踏遍开始的位置(0
2016-06-17 16:58
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
首先这个可以发到C语言板块去,,,根本不是算法的问题。
其次,你给的代码明显是不完整的,
最后如果你看到屏幕上出现了一个黑黑的窗口一闪而过,那是因为程序运行的太快了,运行结束就自动关掉了。。
百度一下“C 一闪而过”,你可以找到详细的解释以及具体解决方法。。
图片附件: 游客没有浏览图片的权限,请 登录注册


φ(゜▽゜*)♪
2016-06-27 21:59
快速回复:各位大神帮我看下,一个马踏遍的程序,为啥后面运行时,程序自动关闭
数据加载中...
 
   



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

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