20200131今日はbfsを書くことを勉強している私です(新冠快走

2763 ワード

自分で完全にコードを叩くのはやはり見るのと違って、多くの問題を発見しました.
  1.タグは列に入る前に置いたほうがいいです
  2.たじげんくうかんラビリンスもんだい
  3.G++テストMLE C++テストTLEはどんなファンタジー操作ですか?
でも問題を発見したのは本当です
前のテストで問題を発見したのに無視した
Trick & Skill
  1.空のキュー:
    (1).ちょくせつわりあて
    (2).一つ一つ列をなす
    (3).Swap
    https://www.cnblogs.com/zhonghuasong/p/7524624.html
  2.乱数の生成
#include
int main(){
    srand(time(NULL));
    cout< 
 

  3.チェックを誤る
 
=======================================================
今日のコード
タイトルPOJ-2251
#include 
#include 
#include 
#include 
#include 
#include
#include
#include
using namespace std;
char a[35][35][35];
int vis[35][35][35];
int n,m,f;
struct point{int l,x,y;};
typedef pairp;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
point now,newo,ende;
queue

qu; inline int read(){ int x=0,f=1;char c=getchar(); while(c'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f; } inline void clean(){ while(!qu.empty())qu.pop(); memset(vis,0,sizeof(vis)); } int bfs(){ while(!qu.empty()){ now=qu.front().first; int dis=qu.front().second; qu.pop(); //cout<=0 && (a[now.l-1][now.x][now.y]=='.' || a[now.l-1][now.x][now.y]=='E') && !vis[now.l-1][now.x][now.y]){ now.l--; qu.push(p(now,dis+1));vis[now.l][now.x][now.y]=1; now.l++; } newo.l=now.l; for(int i=0;i<4;i++){ newo.x=now.x+dx[i]; //cout<n)continue; newo.y=now.y+dy[i]; //cout<m)continue; if(!vis[newo.l][newo.x][newo.y] && (a[newo.l][newo.x][newo.y]=='.' || a[newo.l][newo.x][newo.y]=='E')){ vis[newo.l][newo.x][newo.y]=1;qu.push(p(newo,dis+1));//coun++;cout<>f>>n>>m && n){ char temp; clean(); getchar(); for(int j=1;j<=f;j++){ for(int i=1;i<=n;i++){ for(int t=1;t<=m;t++){ temp=getchar(); a[j][i][t]=temp; if(temp=='S'){now.l=j,now.x=i,now.y=t;} if(temp=='E'){ende.l=j,ende.x=i,ende.y=t;} } getchar(); } getchar(); } qu.push(p(now,0)); bfs(); } return 0; }