马踏棋盘问题的程序c语言,马踏棋盘问题

2023-11-09 05:10

本文主要是介绍马踏棋盘问题的程序c语言,马踏棋盘问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

已结贴√

问题点数:15 回复次数:6

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

马踏棋盘问题

只能执行到第二步,找不出结果,求各位帮忙

#include

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

typedef struct Point{

int x;

int y;

int e;

}Point;

typedef struct {

Point *base;

Point *top;

int stacksize;

}SqStack;

int InitStack(SqStack *S)

{

(*S).base =(Point *)malloc(STACK_INIT_SIZE*sizeof(Point));

if(!(*S).base)exit(1);

(*S).top = (*S).base;

(*S).stacksize = STACK_INIT_SIZE;

return 1;

}

int StackEmpty(SqStack *S)

{

if((*S).top==(*S).base)

return 1;

else

return 0;

}

int Push(SqStack *S,Point e)

{

if((*S).top - (*S).base >= (*S).stacksize)

{

(*S).base =(Point *)realloc((*S).base,((*S).stacksize+STACKINCREMENT) * sizeof(Point));

if(!(*S).base)exit(1);

(*S).top = (*S).base+(*S).stacksize;

(*S).stacksize += STACKINCREMENT;

}

*(*S).top++ = e;

return 1;

}

int Pop(SqStack *S, Point *e)

{

if((*S).top ==(*S).base) return 0;

*e = * --(*S).top;

return 1;

}

int SetTop(SqStack S,Point *e)

{

if(S.top>S.base)

{

*(S.top-1)=*e;

return 1;

}

else

return 0;

}

void main()

{

Point e;

int count=1;

int i,j;

int board[8][8]={{0}};

int x1,y1;

int move1[8]={2,2,1,1,-1,-1,-2,-2,},

move2[8]={1,-1,2,-2,2,-2,1,-1,};

int pic[8][8]; //对应棋盘

SqStack S;

for(i=0;i<8;i++)

for(j=0;j<8;j++)

pic[i][j]=0;

//输入入口点,并让其进栈

printf("输入x1(0-7),y1(0-7):");

scanf("%d%d",&x1,&y1);

e.x=x1;

e.y=y1;

pic[x1][y1]=1;

InitStack(&S);

Push(&S,e);

int k=0;

while(count!=64)

{

if(x1+move1[k]>0&&x1+move1[k]<=8&&y1+move2[k]>0&&y1+move2[k]<=8&&board[x1+move1[k]][y1+move2[k]]==0)

{

pic[x1+move1[k]][y1+move2[k]]=++count;

e.x=x1+move1[k];

e.y=y1+move2[k];

Push(&S,e);

k=0;

}

else

board[x1+move1[k]][y1+move2[k]]=1;

k++;

}

while(!StackEmpty(&S))

{

Pop(&S,&e);

printf("(%d %d)",e.x,e.y);

}

printf("\n");

/* 打印出马走棋盘的路线*/

for(i=0;i<8;i++)

{

for(j=0;j<8;j++)

printf("%d\t",pic[i][j]);

printf("\n\n\n");

}

}

搜索更多相关主题的帖子:

return

这篇关于马踏棋盘问题的程序c语言,马踏棋盘问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374140

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作