`
阿尔萨斯
  • 浏览: 4177694 次
社区版块
存档分类
最新评论

“马的遍历”问题的贪婪法解决算法

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
/**//*
标题:>应试编程实例-[递推算法程序设计]
作者:成晓旭
时间: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;k8;k++)
...{
a
=i+delta_i[(start+k)%8];
b
=j+delta_j[(start+k)%8];
if((a>=0&&a8)&&(b>=0&&b8)&&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;knexit;k++)
...{//逐一考察各个出口
temp=Exit_Number(i+delta_i[a[k]],j+delta_j[a[k]],start,b);
if(tempmin_nexit)
...{
min_nexit
=temp;
result
=a[k];
}

}

return(result);
}

//“马的遍历”问题主函数
voidJourney_Horse()
...{
intx,y,i,j,start,step=0,order;
for(x=0;x8;x++)
...{
for(y=0;y8;y++)
...{
start
=0;//从0号着法开始顺序检查
do
...{
for(i=0;i8;i++)
for(j=0;j8;j++)
board[i][j]
=0;//清棋盘
board[x][y]=1;
i
=x;
j
=y;
for(step=2;step64;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(step64);
//显示当前着法的结果
printf("x-start=[%d],y-start=[%d],start=[%d]: ",x,y,start);
for(i=0;i8;i++)
...{
for(j=0;j8;j++)
printf(
"%4d",board[i][j]);
printf(
" ");
}

scanf(
"%*c");//输入回车,找下一个起点的解
}

}

}

//:============================“马的遍历”问题的贪婪法解决算法===========================

intmain(intargc,char*argv[])
...{
//Encase_Box();
//Journey_Horse();
Run_Give_Change();
printf(
" 应用程序运行结束! ");
return0;
}




分享到:
评论

相关推荐

    C++数据结构知识点与经典算法整理

    一、数据结构知识点总结整理 3 2.数据结构的定义: 4 ...1.5 贪婪法 111 1.6 分治法 113 1.7 动态规划法 115 1.8 回溯法 119 1.9 分支定界法: 120 2.几个重要的算法程序 121 2.1 堆排序 121 2.2 归并排序 122

    武科大算法设计试卷

    武科大算法设计试卷及答案 一、 填空题(10空×2分,共20分)  1、 算法在运行时占有的机器资源的量称为算法复杂性,主要包括( )和( ...8、 用分支限界法解决布线问题时,对问题解空间搜索尝试结束的标志是( )。

    数据结构与算法分析第二版 ---C语言描述(附加答案)

    算法设计技巧10.1 贪婪算法10.1.1 一个简单的调度问题10.1.2 Huffman编码10.1.3 近似装箱问题10.2 分治算法10.2.1 分治算法的运行时间10.2.2 最近点问题10.2.3 选择问题10.2.4 一些运算问题的理论改进10.3 动态规划...

    数据结构与算法分析_Java语言描述(第2版)

    10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼编码 10.1.3 近似装箱问题 10.2 分治算法 10.2.1 分治算法的运行时间 10.2.2 最近点问题 10.2.3 选择问题 10.2.4 一些算术问题的理论改进 10.3 动态规划 ...

    数据结构与算法分析Java语言描述(第二版)

    算法设计技巧10.1 贪婪算法10.1.1 一个简单的调度问题10.1.2 哈夫曼编码10.1.3 近似装箱问题10.2 分治算法10.2.1 分治算法的运行时间10.2.2 最近点问题10.2.3 选择问题10.2.4 一些算术问题的理论改进10.3 动态规划...

    高效算法:竞赛、应试与提高必修128例.[法] Christoph Dürr Jill-Jênn Vie(带书签文字版).pdf

    1 6 4 贪婪算法 20 1 6 5 动态规划算法 20 1 6 6 用整数编码集合 21 1 6 7 二分查找 23 1 7 建议 25 1 8 走得更远 27 第 2 章 字符串 28 2 1 易位构词 28 2 2 T9:9 个按键上的文字 29 2 3 使用字典树进行拼写纠正 ...

    数据结构算法与应用 很详细的,数据结构算法全集 这个是你想找的

    算法设计方法 第13章 贪婪算法 405 13.1 最优化问题 405 13.2 算法思想 406 13.3 应用 409 13.3.1 货箱装船 409 13.3.2 0/1背包问题 410 13.3.3 拓扑排序 412 13.3.4 二分覆盖 415 ...

    数据结构与算法分析_Java语言描述(第2版)]

    算法设计技巧10.1 贪婪算法10.1.1 一个简单的调度问题10.1.2 哈夫曼编码10.1.3 近似装箱问题10.2 分治算法10.2.1 分治算法的运行时间10.2.2 最近点问题10.2.3 选择问题10.2.4 一些算术问题的理论改进10.3 动态规划...

    数据结构、算法与应用:C++语言描述(原书第2版)第二部分

    13.5.2 用相邻适配法求解箱子装载问题 13.6 参考及推荐读物 第14章 搜索树 14.1 定义 14.1.1 二叉搜索树 14.1.2 索引二叉搜索树 14.2 抽象数据类型 14.3 二叉搜索树的操作和实现 14.3.1 类binarySearchTree 14.3.2 ...

    数据结构与算法:C++描述

    本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...

    数据结构与算法分析_Java_语言描述

    参考文献 第10章 算法设计技巧 10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼编码 10.1.3 近似装箱问题 10.2 分治算法 10.2.1 分治算法的运行时间 10.2.2 最近点问题 10.2.3 选择问题 ...

    数据结构算法与应用(C++语言描述).rar

    第13章 贪婪算法 405 13.1 最优化问题 405 13.2 算法思想 406 13.3 应用 409 13.3.1 货箱装船 409 13.3.2 0/1背包问题 410 13.3.3 拓扑排序 412 13.3.4 二分覆盖 415 13.3.5 单源最短路径 421 13.3.6 最小耗费生成...

    数据结构算法与应用-C++语言描述

    本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构与算法的继续学习和研究奠定了一...

    算法:算法实践,例如分治法,贪婪算法,动态规划等

    算法实践,例如分治法,贪婪算法,动态编程等 到目前为止,此回购包含以下方面的实践: 插入排序 合并排序 MaximumSubArray分而治之和蛮力方法 SquareMatrixMultiply蛮力方法 堆排序 MaxProrityQueue ...

    数据结构与算法分析 Java语言描述第2版

    算法设计技巧10.1 贪婪算法10.1.1 一个简单的调度问题10.1.2 哈夫曼编码10.1.3 近似装箱问题10.2 分治算法10.2.1 分治算法的运行时间10.2.2 最近点问题10.2.3 选择问题10.2.4 一些算术问题的理论改进10.3 动态规划...

    数据结构与算法分析-Java语言描述(第2版)_2_2

    9.6.4 有向图 9.6.5 查找强分支 9.7 np完全性介绍 9.7.1 难与易 9.7.2 np类 9.7.3 np完全问题 小结 练习 参考文献第10章 算法设计技巧 10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼...

    数据结构与算法分析-Java语言描述(第2版)_1_2

    9.6.4 有向图 9.6.5 查找强分支 9.7 np完全性介绍 9.7.1 难与易 9.7.2 np类 9.7.3 np完全问题 小结 练习 参考文献第10章 算法设计技巧 10.1 贪婪算法 10.1.1 一个简单的调度问题 10.1.2 哈夫曼...

Global site tag (gtag.js) - Google Analytics