1215迷宫问题(wikioi)突破过程

来源:互联网 发布:黄淮学院网络教学品台 编辑:程序博客网 时间:2024/06/11 01:31

刚刚开始接触搜索类问题,先拿这道练练手吧!

   一开始用深度搜索,果不其然超时了,随后调整思路,用宽搜做,成功AC!

  #include#include#include#include#include#includeusing namespace std;int n;bool hasFind;char mp[20][20];int mv[4][2]={ 1,0, -1,0, 0,-1, 0,1};void bfs(){ queue q; q.push(0); while(!q.empty()){ int t=q.front();q.pop(); int x=t/100,y=t%100; if(x==n-1&&y==n-1){ printf("YES\n"); hasFind=true; return ; }else{ for(int i=0;i<4;i++){ int tx=x+mv[i][0]; int ty=y+mv[i][1]; if(tx<0||ty<0 tx="">=n||ty>=n){ continue; } if(mp[tx][ty]!='#'){ mp[tx][ty]='#'; q.push(tx*100+ty); } } } }}int main(){ int m; while(cin>>m){ while(m--){ cin>>n; for(int i=0;i<n;i++){ for(int k=0;k>mp[i][k]; } } hasFind=false; bfs(); if(!hasFind){ printf("NO\n"); } } } return 0;}

0 0
原创粉丝点击