总的来讲,这是一道很⑨的题,因为:

(1)题目中有⑨个挂钟

(2)有⑨种操作方案

(3)这题因为解空间太小所以可以直接⑨重循环!!

这题可以用迭代加深搜索高效求解,剪枝的策略也很显然:

>所求的操作序列一定是单调不递减的

>同一操作不可能在解中出现4次及以上(操作4次等于没有操作)

代码:

 #include <cstdio>
 #include <cstring>
 #include <algorithm>

 using namespace std;

 ]={};
 ]={};
 ]={};

 void move(int _cmd)
 {
     ++cmdCnt[_cmd];

     switch(_cmd)
     {
     : ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; break;
     : ++dir[]; ++dir[]; ++dir[]; ++dir[]; break;
     }
 }

 void undo(int _cmd)
 {
     --cmdCnt[_cmd];

     switch(_cmd)
     {
     : --dir[]; --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; break;
     : --dir[]; --dir[]; --dir[]; --dir[]; break;
     }
 }

 inline bool isDest()
 {
     ;i<=;i++) ) return false;
     return true;
 }

 bool search_aux(int _maxDepth,int _curDepth,int _lastCmd)
 {
     if(isDest()) return true;
     if(_curDepth > _maxDepth) return false;

     ;i++)
     {
         )
         {
             move(i);
             ,i);
             undo(i);
             if(next) { ++ans[i]; return true; }
         }
     }

     return false;
 }

 void input()
 {
     ;i<=;i++) scanf("%d",dir+i);
 }

 void search()
 {
     ;;i++) ,)) return;
 }

 void printAns()
 {
     ;i<=;i++)
         while(ans[i]--) printf("%d ",i);
 }

 int main()
 {
     input();
     search();
     printAns();
     ;
 }

Cirno is willing to try this problem (*^__^*)

最新文章

  1. 转:在java中使用dom4j解析xml
  2. hadoop运维经验
  3. Mac OS X 安装ruby环境
  4. 迭代加深搜索 POJ 1129 Channel Allocation
  5. Jedis 操作
  6. sql 列设置默认值,语法查询知识点积累
  7. ORA-12012: error on auto execute of job &amp;quot;ORACLE_OCM
  8. [译]MVC应用程序生命周期
  9. Twitter数据抓取的方法(二)
  10. 用boost::bind构造boost::coroutine
  11. haproxy快速安装
  12. Linux磁盘和文件系统管理
  13. 项目实战2—实现基于LVS负载均衡集群的电商网站架构
  14. Django 系列博客(四)
  15. eventproxy 介绍这款好用的工具,前端事件式编程的思维
  16. 搜狗浏览器总是打开123.sogou.com-记搜狗浏览器遭遇劫持一例
  17. (网页)logback的使用和logback.xml详解(转)
  18. python 多进程练习 调用 os.system命令
  19. 利用FFMPEG命令进行文件分割
  20. Ubuntu安装ffmpeg

热门文章

  1. Solr4.4的安装与配置
  2. 【ajax】reqwest
  3. unity3d 制造自己的水体water effect(一)
  4. HTML5 Canvas JavaScript库 Fabric.js 使用经验
  5. php 文本框里面显示数据库调出来的资料
  6. 《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的期望
  7. N2N 对等VPN网络
  8. 【转】服务器证书安装配置指南(Weblogic)
  9. 在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法
  10. Linux编程---线程