最美房子程式設計題

2021-07-16 21:41:54 字數 786 閱讀 2456

題目描述

有乙個n*m的陣列grid,陣列值為0或1,為1之處代表房間,相鄰的1是同一所屋子的房間(斜線相鄰不算),求一共有多少屋子?

如0 0 0 0 0 

01 10 0

0 0 0 0 0

0 0 01 1

0 0 0 0 0

則圖中屋子總數則為2個。

分析

一開始想到的是利用並查集的想法來做,考慮到時間複雜度,於是用鍊錶來儲存中間資料,越寫越複雜了。。。

想了想dfs,發現可以在o(n*m)的時間複雜度得出結果,於是趕緊改用dfs的方法來做。對於搜尋過的位置將grid中置為0,下次不再進行dfs。統計一共進行了多少次dfs就是結果(遞迴下去的dfs不計算次數)。

這種方法叫做seed-filling演算法,用於連通區域分析。

**

void dfs(int grid, int n, int m,int x,int y,int nk) //nk可以去除

{ if(grid[x][y]){

grid[x][y]=0;

if(x-1>=0)

dfs(grid,n,m,x-1,y,nk);

if(y-1>=0)

dfs(grid,n,m,x,y-1,nk);

if(x+1

刷題 BZOJ 5008 方師傅的房子

方師傅來到了乙個二維平面。他站在原點上,覺得這裡風景不錯,就建了乙個房子。這個房子是n個點的凸多邊形 原點一定嚴格在凸多邊形內部。有m個人也到了這個二維平面。現在你得到了m個人的座標,你要判斷這m個人中 有多少人在房子內部。點在凸多邊形邊上或者內部都認為在房子裡面。第一行乙個數n,接下來n行,每行兩...

程式設計題

1.用你所熟悉的任意一種程式語言,編寫乙個完整的過程,將乙個字串插入到另乙個字串的某個位置後面 例如 將 abc 插入到 abcdef 的第三個字元位置後面,結果為 abcabcdef 編寫程式時,請在必要的地方加以注釋 注 不能用該程式語言的內建函式或過程 2.用你所熟悉的任意一種程式語言,編寫乙...

程式設計題

1.編寫函式fun,該函式的功能是 統計一行字串中單詞的個數,作為函式值返回。字串在主函式中輸入,規定所有單詞由小寫字母組成,單詞之間有若干個空格隔開,一行的開始沒有空格 int fun char s 2.已知學生的記錄由學號和學習成績構成,n名學生的資料已存入a結構體陣列中。請編寫函式fun,該函...