正式做POJ的第一题,做出来后又看了别人的代码,就又完善了一下,也通过了。参考 http://blog.sina.com.cn/s/blog_4abcd9bc0100phzb.html

改了之后觉得写得比他好,呵呵。

 #include <iostream>
#include <stdlib.h> using namespace std; #define MAX_W 20
#define MAX_H 20 int s_x;
int s_y;
int w;
int h;
char board[MAX_H+][MAX_W+]; //留边,省得越界检查
int res; int dx[]={,,,-};
int dy[]={,-,,}; void read(void);
void dfs(int x,int y,int time); int main(void)
{
while(scanf("%d%d",&w,&h),w)
{
res=;
getchar(); //残留的换行符
read();
dfs(s_x,s_y,);
printf("%d\n",res==?-:res);
}
return ;
} void read(void)
{
int i,j;
for(i=;i<=h+;i++)
{
for(j=;j<=w+;j++)
{
if(i== || j== || i==h+ || j==w+)
{
board[i][j]=; //清边,防止影响下一轮判断
continue;
} board[i][j]=getchar();
getchar();
if(board[i][j]=='')
{
s_x=i;
s_y=j;
}
}
}
} //从该点寻找终点
//time是已经扔石头的次数
void dfs(int x,int y,int time)
{
int i; if(time>=) return; for(i=;i<;i++)
{
int nx=x;
int ny=y;
if(board[x+dx[i]][y+dy[i]]=='') //方块阻挡则换方向
continue; while() //在该方向滑行
{
nx+=dx[i],ny+=dy[i];
if(nx<= || ny<= ||nx>h || ny>w) //滑出,换下一方向
break;
else if(board[nx][ny]=='')
{
//停下,消失方块,完成该方向,恢复方块,进行下一方向
board[nx][ny]='';
dfs(nx-dx[i],ny-dy[i],time+);
board[nx][ny]='';
break;
}
else if(board[nx][ny]=='') //成功,不用尝试其他方向
{ //因为其它方向一定步骤更多
res=__min(res,time+);
return;
} }
}
}

Curling.cpp

最新文章

  1. 逆向工程 - Reveal、IDA、Hopper、HTTPS抓包 等
  2. MFC ADO连接Sql Server数据库报无效指针的问题
  3. js中style,currentStyle和getComputedStyle的区别
  4. android151 笔记 3
  5. Objective-C 协议(protocol)
  6. .NET2.0下的对象生成JSON数据
  7. 2014多校3 Wow! Such Sequence!段树
  8. JAVA中extends 与implements有啥区别?
  9. Mahout系列之----kmeans 聚类
  10. 【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle
  11. 2.数据库的基本操作&lt;针对于库层面的操作&gt;
  12. Java框架spring 学习笔记(四):BeanPostProcessor接口
  13. Ajax和Json的介绍(一)
  14. sqli-labs(十七)
  15. [UE4]C++代码实现播放粒子特效
  16. nginx配置自动跳转
  17. 收集SpringBoot的一些学习资料
  18. sublime-text-how-to-jump-to-file-from-find-results-using-keyboard
  19. Rafy中的EventBus
  20. Delphi Android USB Interface with the G2

热门文章

  1. C++ union 公共体
  2. PL/SQL — 函数
  3. ArcGIS API for JavaScript 学习笔记(一)
  4. cocos2dx 3.4 截图代码
  5. JQuery需要手动回收xmlHttpRequest对象
  6. css3360度旋转动画
  7. HDU4525+公式
  8. php获取请求的方式(get/post)
  9. linux-0.11内核 任务的堆栈切换
  10. 轻松使用Nginx搭建web服务器