博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度 1365 贝多芬第九交响曲
阅读量:6936 次
发布时间:2019-06-27

本文共 1521 字,大约阅读时间需要 5 分钟。

 

基本BFS,好像一个月没写题了。。。

写完这题继续看linux源码去。一定要坚持

 

1 #include 
2 #include
3 #include
4 using namespace std; 5 int N; 6 int num[102][102]; 7 queue
Q; 8 int start_x,start_y,end_x,end_y; 9 int x_dire[]={-2,-2,-1,-1,1,1,2,2}; 10 int y_dire[]={-1,1,-2,2,-2,2,-1,1}; 11 bool legal_pos(int x,int y) 12 {
13 if(x>=1&&x<=N&&y>=1&&y<=N) 14 return true; 15 return false; 16 } 17 int calac() 18 {
19 while(!Q.empty()){
20 int x,y; 21 x=Q.front(); 22 Q.pop(); 23 y=Q.front(); 24 Q.pop(); 25 if(x==end_x&&y==end_y){
26 return num[x][y]; 27 } 28 int i; 29 for(i=0;i<8;i++){
30 if(num[x+x_dire[i]][y+y_dire[i]]==-1&&legal_pos(x+x_dire[i],y+y_dire[i])){
31 Q.push(x+x_dire[i]); 32 Q.push(y+y_dire[i]); 33 num[x+x_dire[i]][y+y_dire[i]]=num[x][y]+1; 34 } 35 } 36 } 37 return -1; 38 } 39 40 41 42 int main() 43 {
44 while(scanf("%d",&N)!=EOF){
45 int i,j; 46 for(i=1;i<=N;i++) 47 for(j=1;j<=N;j++){
48 num[i][j]=-1; 49 } 50 scanf("%d%d%d%d",&start_x,&start_y,&end_x,&end_y); 51 while(!Q.empty()) 52 Q.pop(); 53 Q.push(start_x); 54 Q.push(start_y); 55 num[start_x][start_y]=0; 56 printf("%d\n",calac()); 57 } 58 }

转载于:https://www.cnblogs.com/yangce/archive/2012/01/30/2332011.html

你可能感兴趣的文章
AMD OpenCL大学课程(3)
查看>>
一种线程安全的单例模式实现
查看>>
memcached-1.4.4在ubuntu下编译的注意事项
查看>>
C# 常用命名空间
查看>>
NameValueCollection详解
查看>>
ERP系统中邮件提醒定时器框架的设计与应用
查看>>
android设置全屏
查看>>
Windows Server 2008 R2安装、使用WPSDK7.1、7.1.1遇到的问题
查看>>
新浪微博Python3客户端接口OAuth2
查看>>
SQL 列出某列有重复的记录
查看>>
POJ 3169 Layout(差分约束+SPFA)
查看>>
MVC3 URL 数据绑定
查看>>
ScrollViewer中元素焦点丢失问题
查看>>
linux上安装配置vsftpd
查看>>
精至手机药典Windows Phone 7版
查看>>
非使用FindControl方法找到深层嵌套的控件 Ver2
查看>>
Android 开发学习笔记(二)—— Activity和Intent
查看>>
BZOJ 1915 [Usaco2010 Open]奶牛的跳格子游戏
查看>>
医生orm之count、where的若干问题
查看>>
SQL Note--Mirror
查看>>