問題描述
w星球的乙個種植園,被分成 m * n 個小格仔(東西方向m行,南北方向n列)。每個格仔裡種了一株合根植物。
這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另乙個格仔的植物合成為一體。
如果我們告訴你哪些小格仔間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?
輸入格式
第一行,兩個整數m,n,用空格分開,表示格仔的行數、列數(1
接下來一行,乙個整數k,表示下面還有k行資料(0
接下來k行,第行兩個整數a,b,表示編號為a的小格仔和編號為b的小格仔合根了。
格仔的編號一行一行,從上到下,從左到右編號。
比如:5 * 4 的小格仔,編號:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
2018.4.14 更新 使用並查集解決:
#include#include#define n 1000000
void init( int *gz , int n );
void change( int *gz , int n );
void union( int *gz , int p , int q );
int find( int *gz , int p );
int getcount( int *gz , int n );
/*並查集
*/int main(void)
int getcount( int *gz , int n )
} return count ;
}int find( int *gz , int p )
return p;
}void union( int *gz , int p , int q )
gz[i] = j ;
}void change( int *gz , int n )
}void init( int *gz , int n )
}
這題蠻簡單的,只要將合根植物用鍊錶連起來就可以很簡單的解決了
#includetypedef struct nodenode;
void init( node *, int );
void input( node *, int , int );
void insert( node *, int, int, int );
void search( node *, int, int *, int );
void change( node *, int * );
int main(void)
void change( node *root, int *ch )
if( root->down != null && ch[root->down->num - 1] == 0 )
if( root->left != null && ch[root->left->num - 1] == 0 )
if( root->right != null && ch[root->right->num - 1] == 0 )
}void search( node *root, int n, int *pp, int k ); //檢測陣列 記錄已經搜尋過的連根
if( k == n )
if( check[k] == 0 )
search( root, n, pp, k+1 );
}void insert( node *root, int head, int tail , int n )
if( head == tail + 1 )
if( head == tail - n )
if( head == tail + n )
}void input( node *root, int k, int n )
}void init( node *root, int n )
}
歷屆試題 合根植物
問題描述 w星球的乙個種植園,被分成 m n 個小格仔 東西方向m行,南北方向n列 每個格仔裡種了一株合根植物。這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另乙個格仔的植物合成為一體。如果我們告訴你哪些小格仔間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?輸入格式 第一行,...
歷屆試題 合根植物 c
問題描述 w星球的乙個種植園,被分成 m n 個小格仔 東西方向m行,南北方向n列 每個格仔裡種了一株合根植物。這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另乙個格仔的植物合成為一體。如果我們告訴你哪些小格仔間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?輸入格式 第一行,...
歷屆試題 合根植物 (並查集)
w星球的乙個種植園,被分成 m n 個小格仔 東西方向m行,南北方向n列 每個格仔裡種了一株合根植物。這種植物有個特點,它的根可能會沿著南北或東西方向伸展,從而與另乙個格仔的植物合成為一體。如果我們告訴你哪些小格仔間出現了連根現象,你能說出這個園中一共有多少株合根植物嗎?輸入格式 第一行,兩個整數m...