利用深度優先搜尋和廣度優先搜尋來計算面積

2021-08-21 19:44:23 字數 1039 閱讀 3112

這裡我們所計算的是這個二維陣列不為0的值得個數,第一行4,4表示是a[4][4],  1,1表示從座標1,1開始,這裡我們建立舉證時就是從1,1開始建立的

#includeint a[51][51];

int book[51][51],m,n,sum;

void dfs(int x,int y),,,};

for(k=0;k<4;k++)

if(a[tx][ty]>0&&book[tx][ty]==0)

} return ;

}int main()

} dfs(startx,starty);

printf("%d",sum);

}

還可以使用廣度優先搜尋

//使用廣度優先搜尋來計算面積

#includestruct node;

int main();//用來標記這個座標是否已經被查詢過了

int i,j,k,sum,max=0,mx,my,m,n,startx,starty,tx,ty;

int next[4][2]=,,,};

scanf("%d %d %d %d",&n,&m,&startx,&starty);

for(i=1;i<=n;i++) }

//初始化

tail=head=1;

que[tail].x=startx;

que[tail].y=starty;

tail++;

book[startx][starty]=1;

sum=1;

//佇列不為空時

while(headn||ty<1||ty>m)

continue;

if(a[tx][ty]>0&&book[tx][ty]==0)

} head++;

} printf("%d",sum);

}

深度優先搜尋和廣度優先搜尋

深度優先的思想是先記住當前的起點,然後選定乙個方向一條道走到黑,若失敗則回到起點再選定另外乙個方向走到黑。廣度優先的思想是記住當前的起點,然後選定各個方向的相鄰點作為新的起點,再繼續。可以看出,深度優先和廣度優先都需要記住當前的起點,不同的是深度優先每次只需要記住乙個方向的相鄰點,廣度優先則要記住所...

廣度優先搜尋和深度優先搜尋

dbf深度優先搜尋,最經典的方法,可以使用遞迴來實現。結構體定義 typedef char vertextype typedef int edgetype define maxvex 100 define infinite 65535 typedef struct mgraph 測試函式如下 mgr...

深度優先搜尋和廣度優先搜尋

定義 圖 graph 是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示為 g v,e 其中,g表示乙個圖,v是圖g中頂點的集合,e是圖g中邊的集合.簡單點的說 圖由節點和邊組成。乙個節點可能與眾多節點直接相連,這些節點被稱為鄰居。如二叉樹就為乙個簡單的圖 廣度優先搜尋演算法 breadth f...