Tôi cần tính h-index từ danh sách các ấn phẩm tôi lưu trữ trong một cây.Tính h-index
gì tôi đã được đi qua cây để giảm bớt được một danh sách các vị trí-số lượng trích dẫn
nó trông giống như:
line 1 10
line 2 5
line 3 4
line 4 0
tôi nên dừng lại ở dòng 3 và trở 3. Vấn đề với các ví dụ được đưa ra và trong trường hợp này là
line 1 4
line 2 0
line 3 0
nó dừng ở 2 vì 4> 1 nhưng 0> 3 là sai. Nó sẽ trả về 1 để thay thế. Bạn có thể giải thích cho tôi tại sao? Tôi biết nó giống như một câu hỏi về toán học, nhưng sau đó tôi có thể cần phải thực hiện lại nó nếu có điều gì đó sai trái.
Đây là mã
int index_h_calc(rbtree_node n, int *i){
if (n == NULL) {
fputs("<empty tree>\n", stdout);
return 0;
}
if (n->right != NULL)
index_h_calc(n->right,i);
graduat *grad;
grad=n->value;
if(DEBUG)
printf("linea %d %d %s\n ",*i,(int)grad->tot,grad->name);
if(*i+1>=(int)grad->tot) {
return *i;
} else
*i+=1;
if (n->left != NULL)
index_h_calc(n->left,i);
return *i;
}
... không phải vậy, "sau đó trả lại chỉ mục h dưới dạng * n * - 1"? Nếu không, nó có vẻ đúng với tôi ... – Dmitri
@Dmitri: không, nó phải là 'i - 1'. Hãy xem ví dụ đầu tiên của Cựu Ước: chúng ta dừng lại ở dòng 4 (vì '0 <4') và trả về chỉ số h của' 4 - 1 = 3'. Trong ví dụ thứ hai, chúng ta dừng lại ở dòng 2 và trả về '1'. – deprecated
Rất tiếc .. Khi tôi viết rằng tôi đã có 'n' và' i' trong đầu vì lý do nào đó. – Dmitri