0
내 코드가 공용품 찾기 알고리즘을 구현하려고하는데 id [] 배열과 sz [] 배열이 있습니다. Union-Find 생성자에서 초기화하지만 Union-Find 클래스의 메서드에서 해당 배열을 사용하려고하면 모든 배열 값이 1로 변경됩니다. 이유를 알 수 없습니다. 내가 빠진 것이 명백한가요?배열 초기화 C++
H 파일
class UnionFind{
public:
UnionFind(int size);
void join(int x, int y);
int connected(int x, int y);
int find(int x);
private:
int size;
int id[];
int sz[];
};
CPP 코멘트에서
UnionFind::UnionFind(int size){
this->id[size] = id[size];
for(int i = 0; i < size; i++){
id[i] = i;
}
for(int i = 0; i < size; i++){
sz[i] = 1;
}
}
int UnionFind::find(int l){
//Path Compression Finding the Root
for(int i = 0; i < 5; i++){
}
while(l != id[l]){
id[l] = id[id[l]];
l = id[l];
}
return l;
}
void UnionFind::join(int x, int y){
int m = find(x);
int n = find(y);
if(sz[m] < sz[n]){
id[m] = n;
sz[n] += sz[m];
}
else{
id[n] = m;
sz[m] += sz[n];
}
}
int UnionFind::connected(int x, int y){
if(find(x) == find(y)){
return 1;
}
else{
return 0;
}
}
표준 C++에서는'int id []'와 같은 데이터 멤버를 가질 수 없습니다. – juanchopanza
이 경우 배열 대신'std :: vector'를 사용하십시오. – David
두 가지 관찰 (1) 당신은'size' (2) 멤버를 설정하지 않습니다. – saadtaame