歷屆試題 合根植物

2021-08-15 20:18:26 字數 2014 閱讀 8081

問題描述

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...