2011-06-11 4 views
6

트리에 저장된 게시 목록에서 h-index을 계산해야합니다. I 라인 3에서 중지하고 3에게 문제를 반환해야h- 인덱스 계산

line 1 10 
line 2 5 
line 3 4 
line 4 0 

: 내가 그것을 모습 인용

의 위치 번호의 목록을 얻는 점점 줄어드는 순서로 트리를 통과한다 했는가

소정의 실시 예와 그것이 거짓 2 3> 1> 4 있기 때문에 0에서 정지

line 1 4 
line 2 0 
line 3 0 

이 경우이다. 대신 1을 리턴해야합니다. 왜 나 한테 설명 할 수 있니? 나는 그것이 수학자의 질문과 비슷하다는 것을 알고 있지만, 그 이후에 뭔가 잘못 되었다면 다시 구현해야 할 수도 있습니다. 여기

은 좀 미묘 말이냐 코드 아마도

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; 
    } 

답변

0

이 여러 사용자 n에 해당 루비 예 github에 솔루션, citePages하고있다 인 h-index 계산

function h_index(){ 
     var hArray = new Array(); 
     var x = 0; 
     for(var i = 0; i < citePages.length; i++){ 
      var citeArray = citePages[i];   
      for(var j = 0; j < citeArray.length; j++){ 
       // The multiplication by one is a hack to convert the string type into a numerical type 
       hArray[x++] = citeArray[j]*1; 
      } 
     } 
     hArray.sort(sortNumber); 
     //alert(hArray); 
     for(var i = 0; i < hArray.length; i++){ 
      if(i > hArray[i]){ 
       return hArray[i-1]; 
      } 
     } 
    } 

이전 기능 -

function getCitationCount(responseText){ 
    if (responseText == null){ 
    _gel("sContent").innerHTML = "<i>Invalid data.</i>"; 
      alert("There is no data."); 
     return; 
     } 

var cite_exists = 1; 
var cite_str_len = 14; 
var len_of_Cite_by_str = 9; 
var citeArray = new Array(); 
for(var i = 0; cite_exists > 0; i++) 
    { 
    cite_exists = responseText.search('Cited by'); 
    if(cite_exists == -1){ 
     //alert("No more citations for given Author!"); 
     //return; 
    }else{ 
     var tmp_string = responseText.substr(cite_exists, cite_str_len); 
     var end = (tmp_string.indexOf("<")-len_of_Cite_by_str); 
     citeArray[i] = tmp_string.substr(len_of_Cite_by_str, end); 
     publications++; 
     responseText = responseText.substr(cite_exists+cite_str_len, responseText.length); 
    } 
} 
return citeArray; 
} 

이 제공하지 않는 경우 해결할 수있는 문제를 푸십시오. 그래서 우리는 예제 데이터가 필요합니다. 예를 들어 일반적인 데이터의 jsfiddle은 이것이 수학적 r이라는 점을 고려할 때 각 경우에 어떤 결과가 예상되는지를 말합니다. ather는 코딩 질문보다 훨씬 복잡하며 인구가 많은 복잡한 데이터 구조로만 테스트 할 수 있습니다.

0

이지만, 단지 줄 번호에서 하나를 뺄 대답하지? 즉, i이 줄 번호이고 n이 인용 횟수 인 경우 n < i으로 줄을 찾은 다음 h- 색인을 i - 1으로 반환 할 때까지 트리를 통과합니다.

+0

... "그런 다음 h- 색인을 * n * - 1"로 반환하면 안됩니까? 그렇지 않으면 나에게 소리가납니다. – Dmitri

+0

@Dmitri : 아니, 'i - 1'이어야합니다. 구약의 첫 번째 예를 생각해 봅시다 : 우리는 4 행에서 멈추고 (왜냐하면'0 <4'),'4-1 = 3'의 h- 색인을 돌려줍니다. 두 번째 예에서는 2 행에서 멈추고 '1'을 반환합니다. – deprecated

+0

죄송합니다. 어떤 이유로 든 마음에 "n"과 "i"가 있다고 썼습니다. – Dmitri