“马的遍历”问题的贪婪法解决算法
作者:成晓旭
时间:2002年09月14日(18:20:00-20:18:00)
实现“装箱”问题的贪婪算法实现函数
时间:2002年09月14日(22:00:00-23:18:00)
实现“装箱”问题的贪婪算法实现函数
时间:2002年09月14日(18:20:38-22:18:00)
实现“人民币找零”问题的贪婪法解决算法
*/#include"stdio.h"#include"stdlib.h"
//:============================“马的遍历”问题的贪婪法解决算法===========================intdelta_i[]=...{2,1,-1,-2,-2,-1,1,2};
intdelta_j[]=...{1,2,2,1,-1,-2,-2,-1};
intboard[8][8];//棋盘数组(board[i,j]表示:马经过位置[i行,j列]时的步骤)
//求(i,j)的出口数,和各出口号于array[],start是顺序选择着法的开始序号intExit_Number(inti,intj,intstart,intarray[])
...{
inta,b,k,count;
for(count=k=0;k<8;k++)
...{
a=i+delta_i[(start+k)%8];
b=j+delta_j[(start+k)%8];
if((a>=0&&a<8)&&(b>=0&&b<8)&&board[a][b]==0)
array[count++]=(start+k)%8;
}return(count);//返回出口数}//选下一出口,start是顺序选择着法的开始序号intSelect_NextExit(inti,intj,intstart)
...{
intmin_nexit,nexit,temp,a[8],b[8],k,result;
nexit=Exit_Number(i,j,start,a);//确定(i,j)的出口个数if(nexit==0)
return(-1);//没有出口for(min_nexit=9,k=0;k<nexit;k++)
...{//逐一考察各个出口temp=Exit_Number(i+delta_i[a[k]],j+delta_j[a[k]],start,b);
if(temp<min_nexit)
...{
min_nexit=temp;
result=a[k];
} }return(result);
}//“马的遍历”问题主函数voidJourney_Horse()
...{
intx,y,i,j,start,step=0,order;
for(x=0;x<8;x++)
...{
for(y=0;y<8;y++)
...{
start=0;//从0号着法开始顺序检查do...{
for(i=0;i<8;i++)
for(j=0;j<8;j++)
board[i][j]=0;//清棋盘board[x][y]=1;
i=x;
j=y;
for(step=2;step<=64;step++)
...{
if((order=Select_NextExit(i,j,start))==-1)
break;//没有出口i=i+delta_i[order];//前进一步j=j+delta_j[order];
board[i][j]=step;//马在第step步时将经过位置[i行,j列]}if(step>64)
break;//走出棋盘了,自然应该结束循环start++;//最先检查的着法序号增1}while(step<=64);
//显示当前着法的结果printf("x-start = [%d],y-start = [%d],start = [%d]: ",x,y,start);
for(i=0;i<8;i++)
...{
for(j=0;j<8;j++)
printf("%4d",board[i][j]);
printf(" ");
} scanf("%*c");//输入回车,找下一个起点的解} }}//:============================“马的遍历”问题的贪婪法解决算法===========================intmain(intargc,char*argv[])
...{
//Encase_Box();
//Journey_Horse();Run_Give_Change();
printf(" 应用程序运行结束! ");
return0;
}
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=935682
“马的遍历”问题的贪婪法解决算法相关推荐
- python遍历法解决伤脑筋的十三块全部可行解
目录 前言 一.解决思路 1.1. 解决思路 1.2 存在问题 1.3 解决方法 二.问题解决 1. 积木抽象 2. 计算孔洞数量 3. 主程序 4. 部分结果展示 总结 前言 "伤脑筋十三 ...
- 回溯法之马的遍历问题(递归)
马的遍历问题:在n*m的棋盘上,马只能走日字.马从位置(x,y)处出发,把棋盘的每一点都走一次,且只走一次,找出所有路径. 问题分析:行n,列m,马在不出边界的情况下有8个方向可以行走(走日字),如当 ...
- 1-2、算法设计常用思想之贪婪法
文章内容来自王晓华老师 贪心算法,是寻找最优解问题的常用方法 这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好的或最优的选择(局部最有利的选择),并以此希望最后堆 ...
- 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)
问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...
- 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题
问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...
- 哈希表_实现插入、删除、查找元素操作(链地址法解决冲突)
这几天用在写代码(实际上是为了补作业)的时间明显比以前多了,在这过程中也 发现了自己由于前期的训练太少,导致很多基础的语法都不熟悉,有很长的时间都用在了debug上.很多问题写的时候记得,过后又忘了, ...
- 第1-2课:算法设计常用思想之贪婪法
算法作为智力活动的结果,并不是随机头脑风暴活动的产物,虽然因人而异,会有不同的结果,但是基本上它应该是遵循一定规律的活动结果.首先,它需要一些基础性的知识作为这种智力活动的着力点,比如相关领域的数学知 ...
- 重排链表-c语言链表法解决
重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...
- 回溯法解决力扣79题单词搜索
回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...
最新文章
- CUDA硬件架构知识
- CVPR 2021 Oral | 室内动态场景中的相机重定位
- 输入和if else和switch的应用
- 动手---sbt(2)
- 关于CSS样式清除浮动的总结
- Git和GitHub使用教程
- CF1322B:Present(异或、two pointers)
- 【渝粤教育】国家开放大学2019年春季 0408-22T管理学基础 参考试题
- C语言+数据结构总结
- 【JVM】javap命令行分析揭示boolean的本质的虚拟机指令
- 关于GPU数据库的未来
- jquery-migrate.min.js兼容jQuery版本
- 爬虫笔记34:mongodb的概述(安装和启动)、基本命令、练习题
- 【深度学习】(1) CNN中的注意力机制(SE、ECA、CBAM),附Pytorch完整代码
- 华为交换机和路由器命令和trunk
- chapter html文件,chapter27_HTML解析(pyquery)
- 一种简单的生成伪随机数的方法(翻译)
- Qt生成二维码图片方法
- C#算法:推算经理的3个女儿的年龄
- OCP学习基本知识点总结
热门文章
- 马云西点军校华为_马云西点军校英文演讲:真正的领导者,才能看到别人看不到的事情(附视频摘要稿)...
- PaddlePaddle测试模型报Intel MKL function load error: cpu specific dynamic library is not loaded.
- R如何用ggplot画图
- 数据分析:旅游景点销售门票和消费情况分析
- 如何将多个excel表格合并成一个_如何把多个pdf合并成一个pdf
- 自动泊车(之三)车位线定位(视觉定位)
- Canvas在页面画出各种图形的方法
- 《可爱女人》周杰伦 歌词
- Windows下使用bat批处理文件实现进程守护
- webgl第27课-三维空间-不同位置的三角形