/**//*    标题:<<系统设计师>>应试编程实例-[递推算法程序设计]
    作者:成晓旭
    时间: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

“马的遍历”问题的贪婪法解决算法相关推荐

  1. python遍历法解决伤脑筋的十三块全部可行解

    目录 前言 一.解决思路 1.1. 解决思路 1.2 存在问题 1.3 解决方法 二.问题解决 1. 积木抽象 2. 计算孔洞数量 3. 主程序 4. 部分结果展示 总结 前言 "伤脑筋十三 ...

  2. 回溯法之马的遍历问题(递归)

    马的遍历问题:在n*m的棋盘上,马只能走日字.马从位置(x,y)处出发,把棋盘的每一点都走一次,且只走一次,找出所有路径. 问题分析:行n,列m,马在不出边界的情况下有8个方向可以行走(走日字),如当 ...

  3. 1-2、算法设计常用思想之贪婪法

    文章内容来自王晓华老师 贪心算法,是寻找最优解问题的常用方法 这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好的或最优的选择(局部最有利的选择),并以此希望最后堆 ...

  4. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

    问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...

  5. 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题

    问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...

  6. 哈希表_实现插入、删除、查找元素操作(链地址法解决冲突)

    这几天用在写代码(实际上是为了补作业)的时间明显比以前多了,在这过程中也 发现了自己由于前期的训练太少,导致很多基础的语法都不熟悉,有很长的时间都用在了debug上.很多问题写的时候记得,过后又忘了, ...

  7. 第1-2课:算法设计常用思想之贪婪法

    算法作为智力活动的结果,并不是随机头脑风暴活动的产物,虽然因人而异,会有不同的结果,但是基本上它应该是遵循一定规律的活动结果.首先,它需要一些基础性的知识作为这种智力活动的着力点,比如相关领域的数学知 ...

  8. 重排链表-c语言链表法解决

    重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...

  9. 回溯法解决力扣79题单词搜索

    回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...

最新文章

  1. CUDA硬件架构知识
  2. CVPR 2021 Oral | 室内动态场景中的相机重定位
  3. 输入和if else和switch的应用
  4. 动手---sbt(2)
  5. 关于CSS样式清除浮动的总结
  6. Git和GitHub使用教程
  7. CF1322B:Present(异或、two pointers)
  8. 【渝粤教育】国家开放大学2019年春季 0408-22T管理学基础 参考试题
  9. C语言+数据结构总结
  10. 【JVM】javap命令行分析揭示boolean的本质的虚拟机指令
  11. 关于GPU数据库的未来
  12. jquery-migrate.min.js兼容jQuery版本
  13. 爬虫笔记34:mongodb的概述(安装和启动)、基本命令、练习题
  14. 【深度学习】(1) CNN中的注意力机制(SE、ECA、CBAM),附Pytorch完整代码
  15. 华为交换机和路由器命令和trunk
  16. chapter html文件,chapter27_HTML解析(pyquery)
  17. 一种简单的生成伪随机数的方法(翻译)
  18. Qt生成二维码图片方法
  19. C#算法:推算经理的3个女儿的年龄
  20. OCP学习基本知识点总结

热门文章

  1. 马云西点军校华为_马云西点军校英文演讲:真正的领导者,才能看到别人看不到的事情(附视频摘要稿)...
  2. PaddlePaddle测试模型报Intel MKL function load error: cpu specific dynamic library is not loaded.
  3. R如何用ggplot画图
  4. 数据分析:旅游景点销售门票和消费情况分析
  5. 如何将多个excel表格合并成一个_如何把多个pdf合并成一个pdf
  6. 自动泊车(之三)车位线定位(视觉定位)
  7. Canvas在页面画出各种图形的方法
  8. 《可爱女人》周杰伦 歌词
  9. Windows下使用bat批处理文件实现进程守护
  10. webgl第27课-三维空间-不同位置的三角形