签到

05月05日
尚未签到

共有回帖数 0

    梦中与你牵手

    等级:
    #includestdio.h
    #includestring.h
    #includestdlib.h
    #define M 8
    //定义棋盘大小为8
    #define SIZE 100
    int board[M][M];
    typedef struct sirect
    {
    int r,c,pathnum;
    }
    dir;
    typedef struct nodetype
    {
    int r,c,pathnum;
    struct nodetype*next,*prior;
    }
    node;
    int pathnum(int row,int cn)
    {
    int a,b,count=0;
    a=row;
    b=cn;
    //
    if (a-2=0&&b-1=0&&board[a-2][b-1]==0)
    count++;
    if (a-2=0&&b+1=0&&board[a-2][b+1]==0)
    count++;
    if (a+2=0&&b-1=0&&board[a-2][b-1]==0)
    count++;
    if (a+2=0&&b+1=0&&board[a-2][b+1]==0)
    count++;
    if (a-1=0&&b+2=0&&board[a-2][b+2]==0)
    count++;
    if (a-1=0&&b-2=0&&board[a-2][b-2]==0)
    count++;
    if (a+1=0&&b+2=0&&board[a-2][b+2]==0)
    count++;
    if (a+1=0&&b-2=0&&board[a-2][b-2]==0)
    count++;
    return count;
    }
    //
    void findway(int m,int n)
    {
    dir f[8],path;
    int i,j,k,stepnum;
    stepnum=1;
    i=m;
    j=n;
    while (stepnumM*M&&iM&&jM&&i=0&&j=0)
    {
    board[j]=stepnum;
    printf("%d,%d,%d",i,j,board[j]);


    //
    path.pathnum=8;
    //
    for(k=0;k8;k++)
    {
    f[k].r=-1;
    f[k].c=-1;
    }
    //
    if(i-2=0&&j-1=0)
    {
    f[0].r=i-2;
    f[0].c=j-1;
    f[0].pathnum=pathnum(f[0].r,f[0].c);
    }
    if(i-2=0&&j+1M)
    {
    f[1].r=i-2;
    f[1].c=j+1;
    f[1].pathnum=pathnum(f[1].r,f[1].c);
    }
    if(i+2M&&j-1=0)
    {
    f[2].r=i+2;
    f[2].c=j-1;
    f[2].pathnum=pathnum(f[2].r,f[2].c);
    }
    if(i+2M&&j+1M)
    {
    f[3].r=i+2;
    f[3].c=j+1;
    f[3].pathnum=pathnum(f[3].r,f[3].c);
    }
    if(i-1=0&&j+2M)
    {
    f[4].r=i-1;
    f[4].c=j+2;
    f[4].pathnum=pathnum(f[4].r,f[4].c);
    }
    if(i-1=0&&j-2=0)
    {
    f[5].r=i-1;
    f[5].c=j-2;
    f[5].pathnum=pathnum(f[5].r,f[5].c);
    }
    if(i+1M&&j-2=0)
    {
    f[6].r=i+1;
    f[6].c=j-2;
    f[6].pathnum=pathnum(f[6].r,f[6].c);
    }
    if(i+1M&&j+2M)
    {
    f[7].r=i+1;
    f[7].c=j+2;
    f[7].pathnum=pathnum(f[7].r,f[7].c);
    }
    //
    for(k=0;k8;k++)
    if(f[k].r=0&&f[k].c=0&&f[k].pathnum=path.pathnum&&board[f[k].r][f[k].c]==0
    &&f[k].pathnum0)
    {
    path.pathnum=f[k].pathnum;
    path.r=f[k].r;
    path.c=f[k].c;
    }
    i=path.r;
    j=path.c;
    stepnum++;
    }
    board[j]=M*M-1;


    if(i-2=0&&j-1=0&&board[i-2][j-1]==0)
    {
    i=i-2;
    j=j-1;
    }
    else
    if(i-2=0&&j-1M&&board[i-2][j+1]==0)
    {
    i=i-2;
    j=j+1;
    }
    else
    if(i+1M&&j+2M&&board[i+1][j+2]==0)
    {
    i=i+1;
    j=j+2;
    }
    else //```````````````````````i和j```````````````````````````````````````````````````````````````````````````````````
    if(i+2M&&j-1=0&&board[i+2][j-1]==0)
    {
    i=i+2;
    j=j-1;
    }
    else
    if(i+1M&&j-2=0&&board[i+1][j-2]==0)
    {
    i=i+1;
    j=j-2;
    }
    else
    if(i-1=0&&j-2=0&&board[i-1][j-2]==0)
    {
    i=i-1;
    j=j-2;
    }
    board[j]=M*M;
    printf("%d,%d,%d",i,j,board[j]);
    }
    void main()
    {
    int r,c,i,j;
    printf("请输入马在棋盘的坐标(8*8)n");
    scanf("%d,%d",&r,&c);
    findway(r,c);
    printf("n");
    //
    for(i=0;iM;i++)
    {
    for(j=0;jM;i++)
    printf("%3d",board[j]);
    printf("n");


    }
    }

    楼主 2015-07-02 11:27 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知