1091 Acute Stroke(30 分)

注意對應好xyz
需要返回值:DFS使用max在每次的DFS中更新,BFS直接計數即可
如果圖很大不要用DFS,會爆棧

#include<bits/stdc++.h>
using namespace std;
struct node{
    int z,y,x;
}Node;
int G[70][1300][130];
bool inq[70][1300][130];
int ans;
int m,n,L,T;
int Z[6]={1,-1,0,0,0,0};
int Y[6]={0,0,1,-1,0,0};
int X[6]={0,0,0,0,1,-1};
bool judge(int z,int y,int x)
{
    if(z<0||z>=L||y<0||y>=m||x<0||x>=n)return false;
    if(G[z][y][x]==0||inq[z][y][x]==true)return false;
    return true;
}
int BFS(int z,int y,int x)
{
    int temp=0;
    queue<node>q;
    Node.x=x,Node.y=y,Node.z=z;
    q.push(Node);
    inq[z][y][x]=true;
    while(!q.empty())
    {
        node front=q.front();
        temp++;
        q.pop();
        for(int i=0;i<6;i++)
        {
            int newx=front.x+X[i],newy=front.y+Y[i],newz=front.z+Z[i];
            if(judge(newz,newy,newx))
            {
                Node.x=newx,Node.y=newy,Node.z=newz;
                q.push(Node);
                inq[newz][newy][newx]=true;
            }
        }
    }
    return temp>=T?temp:0;
}
int main()
{
    
    scanf("%d%d%d%d",&m,&n,&L,&T);
    for(int z=0;z<L;z++)
    {
        for(int y=0;y<m;y++)
        {
            for(int x=0;x<n;x++)
            {
                int temp;
                scanf("%d",&temp);
                G[z][y][x]=temp;
            }
        }
    }
    for(int z=0;z<L;z++)
    {
        for(int y=0;y<m;y++)
        {
            for(int x=0;x<n;x++)
            {
                if(G[z][y][x]==1&&!inq[z][y][x])
                {
                    ans+=BFS(z,y,x);
                }
            }
        }
    }
    printf("%d",ans);
    return 0;
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,906評論 0 33
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,981評論 25 709
  • 以前畫的基本是臨摹的 這次打算挑戰(zhàn)一下畫真人頭像的 但是發(fā)現畫到最后就跟原來的人不像了(っ ? -?) 不過還是堅...
    尋潯妖夭閱讀 291評論 0 5
  • 林辰躲在一個儲物室里休息,天快要黑了,這次的比賽場地這么大林辰估計最少也要有7天時間,看了看定位器,比賽剩余人數還...
    生活愛問人閱讀 1,132評論 0 2
  • 作為一個成年人,閱讀一本書都成問題,所以人生之路越走越窄,最后列為淘汰人群。 我們一年閱讀書的數量少得可...
    高樂呵閱讀 112評論 0 0

友情鏈接更多精彩內容