日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu1175-连连看(dfs)

發布時間:2024/4/14 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1175-连连看(dfs) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個一個走,記錄方向改變了幾次,不能超過兩次,兩次如果還沒到終點return;

1 #include<cstdio> 2 3 #include<string.h> 4 5 #define inf 0x3f3f3f3f 6 7 const int maxn=1000; 8 9 using namespace std; 10 11 const int dir[4][2]={{1,0},{0,1},{0,-1},{-1,0}}; 12 13 int flag[maxn+10][maxn+10]; 14 15 int n,m,q; 16 17 int sx,sy,gx,gy; 18 19 int a[maxn+10][maxn+10]; 20 21 int dfs(int x,int y,int dirc,int turn){ 22 //printf("%d %d %d %d\n",x,y,dirc,turn); 23 if(turn>2) return 0; 24 if(x==gx&&y==gy){ 25 return 1; 26 } 27 for(int i=0;i<4;i++){ 28 if(turn==2&&i!=dirc) continue; 29 int nx=x+dir[i][0]; 30 int ny=y+dir[i][1]; 31 if(nx==gx&&ny==gy){ 32 if(i==dirc||dirc==-1) return 1; 33 else if(i!=dirc&&turn+1<=2) return 1; 34 continue; 35 } 36 if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!flag[nx][ny]&&!a[nx][ny]){ 37 if(i==dirc||dirc==-1){ 38 flag[nx][ny]=1; 39 if(dfs(nx,ny,i,turn)) return 1; 40 } else if(i!=dirc){ 41 flag[nx][ny]=1; 42 if(dfs(nx,ny,i,turn+1)) return 1; 43 } 44 flag[nx][ny]=0; 45 } 46 } 47 return 0; 48 } 49 50 int main() 51 { 52 while(scanf("%d%d",&n,&m)!=EOF){ 53 if(n==0&&m==0) break; 54 for(int i=1;i<=n;i++){ 55 for(int j=1;j<=m;j++){ 56 scanf("%d",&a[i][j]); 57 } 58 } 59 scanf("%d",&q); 60 while(q--){ 61 memset(flag,0,sizeof(flag)); 62 scanf("%d%d%d%d",&sx,&sy,&gx,&gy); 63 if(!a[sx][sy]||!a[gx][gy]||a[sx][sy]!=a[gx][gy]){ 64 printf("NO\n"); 65 continue; 66 } 67 if(dfs(sx,sy,-1,0)) printf("YES\n"); 68 else printf("NO\n"); 69 } 70 } 71 return 0; 72 }

?

轉載于:https://www.cnblogs.com/GeniusYang/p/5733172.html

總結

以上是生活随笔為你收集整理的hdu1175-连连看(dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。