原题地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=58
表示鸭梨好大!队友AC好久以后,我终于才开始看搜索,伤不起啊!!必须的加油了,要不下次踢人就会有我一个了,呜呜呜!!!
代码如下:(赶时间,草草完事)
#include<stdio.h> #include<string.h> #include<queue> using namespace std; struct sousuo { int x,y,step; }e,r; int m[9][9]= {1,1,1,1,1,1,1,1,1, 1,0,0,1,0,0,1,0,1, 1,0,0,1,1,0,0,0,1, 1,0,1,0,1,1,0,1,1, 1,0,0,0,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,0,0,0,1, 1,1,1,1,1,1,1,1,1}; int n[9][9]={0},shangxia[4]={0,0,1,-1},zuoyou[4]={1,-1,0,0}; queue <sousuo> Q; int search(int a,int b,int c,int d) { int i,j; sousuo e={a,b,0}; Q.push(e); while(!Q.empty()) { e=Q.front(); n[e.x][e.y]=1; if( e.x==c && e.y==d ) break; for(int k=0;k<4;k++) { i=e.x+zuoyou[k]; j=e.y+shangxia[k]; if(i>=1&&i<9&&j>=1&&j<9&&!n[i][j]&&!m[i][j]) { sousuo r={i,j,e.step+1}; Q.push(r); n[r.x][r.y]=1; } } Q.pop(); } if(Q.empty()) return -1; while(!Q.empty()) Q.pop(); return e.step; } int main() { int a,b,x1,x2,y1,y2; scanf("%d",&a); while(a--) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); memset(n,0,sizeof(n)); printf("%d\n",search(x1,y1,x2,y2)); } return 0; }
好久都没爆发了,表示自己现在已经没有的着火点已经变得很高了,想爆发一次,这得需要多大的温度啊???
也许,改天那个妹妹能够给我降一降着火点……嘿嘿
大牛的递归好强大!!以后要研究一下
#include<iostream> using namespace std; int arr[9][9]={1,1,1,1,1,1,1,1,1, 1,0,0,1,0,0,1,0,1, 1,0,0,1,1,0,0,0,1, 1,0,1,0,1,1,0,1,1, 1,0,0,0,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,1,0,0,1, 1,1,0,1,0,0,0,0,1, 1,1,1,1,1,1,1,1,1};; int a,b,c,d,m; void dfs(int i,int j,int s) { if(arr[i][j]==1) return ; if(i==c&&j==d) { m=min(s,m); return ; } s=s+1; arr[i][j]=1; dfs(i+1,j,s); dfs(i,j+1,s); dfs(i-1,j,s); dfs(i,j-1,s); arr[i][j]=0; } int main() { int t; cin>>t; while(t--) { m=20000000; cin>>a>>b>>c>>d; dfs(a,b,0); cout<<m<<endl; } return 0; }
还有xiaod的代码,他感觉他自己的代码很犀利,我一定要膜拜一下!!