最近很疼

研究扫雷和空当接龙 freecell

搜到几个代码, 总是没有源代码, 不爽

就写了个

本来用a* 算法, 好像出不来

然后使用深度优先, 有些可以快速得到结果.

最大移动张数计算方式:(可用单元+1)×(闲置列+1)

代码放到

https://bird-self-lib.googlecode.com/svn/branches/FreeCellCalculate

下载应该不需要权限

一张牌

Card

内部2种表达方式

1. 从0-52的序列, 把4套牌都排序了. 梅花的0-12, 方块的...这个占字节少,快速.

2. 用type和number,  花色是type, 1-10,jqk 这些是number, 这个方便调试.

class CCard{
#if CARD_1_BYTEUINT8       m_num;
#elseeType       m_type;eNumber     m_number;  //0-9(1-10), 11- J, 11- Q, 12- K
#endif};

一个状态 叫一个State, 如图

左上角是bench, 右上角是拍好序的sorted

下面就是牌. 每竖是一个list

每竖行是一个column,

class CState
{
public:    UINT                    m_id;UINT                    m_idxFather;bool                    m_hasGenSon;ListInt                 m_idxSon;UINT16                  m_value;UINT8                   m_step;UINT                    m_hash;//std::string             m_str;VecCard                 m_vecIdxSorted;   //4 vec, save show cardVecCard                 m_vecBench;       //4 card typedef std::vector<ListCard>  VecListCard;VecListCard             m_vecVecIdx;
};

算法,深度优先

从开局的state开始

生成他的所有子步骤, 每个都是一个son state

每个都算出一个value

然后把最低value的当作当前节点,

再次遍历

找到完成的状态.

如果找不到就依次退回到父节点.

freecel 空档接龙 算法相关推荐

  1. 最全微信红包分配算法,不只是二倍均值那么简单

    最全微信红包分配算法!不只是二倍均值那么简单! 一.序言 本文要解决什么问题? 抢红包的顺序对红包收益有无影响? 抢红包的顺序对当运气王的概率有无影响? 红包接龙游戏每次都是先抢好还是后抢好? 红包接 ...

  2. 工作▍推荐系统算法工程师是搞啥的?工作内容、技能、面试题全解析

    推荐算法工程师就业指导 2016年,YouTube发表论文,将深度神经网络应用推荐系统中,实现了从大规模可选的推荐内容中找到最有可能的推荐结果. 近年来,推荐系统被广泛的应用于电子商务推荐.个性化广告 ...

  3. 解决全局优化和离散问题的二进制多宇宙算法

    Binary multi‑verse optimization algorithm for global optimization and discrete problems 1.摘要 多宇宙算法已经 ...

  4. 学计算机的,可以不悲哀

    学计算机的,可以不悲哀 李绪成 http://blog.csdn.net/javaeeteacher 上周写了一篇文章<学计算机的,有点悲哀>,原因是看到了两则消息:高考报考人数以及计算机 ...

  5. 鼠标一点打开几个网页

    最近比较忙,所以好几天没来了,今天难得有空闲,所以将最近遇到问题,一股脑放上来.然后我又会没大有空了,希望说我的ISA问题可以解决的朋友会将方法留给我,有时朋友指点一下下,就会有睡梦初醒的感觉, 前天 ...

  6. 关于在自己的程序中使用其它窗口的菜单

    // //关于在自己的程序中使用其它窗口的菜单 //在自己的应用程序中控制其它程序的菜单,首先要获取其它程序主窗口的句柄( 为HWND类型),其次向需要控制的菜单发出 //WM_COMMAND消息( ...

  7. 注册表功能大全(转)

    键值名称:NoDeletingComponents 数据类型:DWORD 键 值:1 作 用:禁止添加桌面项 路 径:HKEY_USERS\.DEFAULT\Software\Microsoft\Wi ...

  8. [实用资料系列]注册表技术大全「二辛苦收集的注册表大全」

    看完了想自己动手不要忘了先备份哦... 有什么后果不要找我...90%以上我多试过.我的操作系统是XP 我想对大家绝对用帮助的. 注册表基础: ********系统文件夹:********* 名称 路 ...

  9. 程序员,你得选准买房的时间!

    前几天我在脉脉上看到一个热帖. 夫妻双方都是互联网员工,买了房每个月还贷1w多,感觉压力很大,十分害怕失业. 而热帖下的评论也是五花八门. 有些人觉得一万多的房贷不算啥,他们每个月还2w.3w多,照样 ...

最新文章

  1. yolov3网络结构笔记
  2. java 对象传递给方法_java – 将对象值传递给方法
  3. 字符串扩展_JAVA
  4. 超级管理器Android,超级文件管理器app
  5. AutoMapper使用
  6. 关于@Alias注解的几个问题
  7. java发邮件的框架_Java的Spring框架中实现发送邮件功能的核心代码示例
  8. substring的用法
  9. JAVA常见算法题(二十五)
  10. topcoder srm 686 div1 -3
  11. 2021-CVPR-Inpainting论文导读
  12. lighttpd跟php,Lighttpd与PHP
  13. 零基础学DevOps必看教程,带你10分钟快速实战入门DevOps
  14. 基于LSTM-Attention模型的光伏电站发电量预估(1)
  15. R语言手动计算主成分分析(PCA)及其在R函数的实现
  16. 此身, 此时, 此地
  17. 带特殊符号|的字符串的截取
  18. 张浩java成绩大于98分_1028学习
  19. JS 中禁用输入法
  20. java-php-python-ssm万达影院售票管理系统计算机毕业设计

热门文章

  1. Opencv图像处理:判断图片里某个颜色值占的比例
  2. (ง •_•)ง[Python3 OpenCV4]4.颜色转换
  3. 线性分类器与非线性分类器
  4. jira oracle安装,JIRA使用教程:连接数据库—Oracle
  5. Unity3D游戏学习笔记1
  6. VC++6.0 多行注释/取消注释 快捷键
  7. postman初级-2-引用变量
  8. 2017年度总结——三十而立
  9. 页面因excel版本问题,无法上传excel文件
  10. arduino之旅——L298N驱动小车前进后退