2013-07-03 60 views
-4

這是Zyflair有人可以解釋這個java代碼

topcoder SRM 569 DIV 2 problem 250的解決方案我無法理解的代碼或它是如何工作的可以有人解釋或簡化它。

public int countSupervisors(int[] students, int Y, int J){ 
    for(int i = 0,Y2 = Y + (Y = 0),J2=J+(J=0) ;i<students.length; i++,Y +=students [i -1 ]){ 
    J =Math.max(J,-(Math.max(0, students[i]-Y2)+J2-1)/J2+(students[i] = (students[i]+J2-1)/J2)); 
     } 
    return Y-J; 
} 
+1

什麼討厭的一段代碼。競爭對手通常會這樣做,所以他們的代碼很難理解(因此也是挑戰)。問題描述是什麼?多一點背景會有所幫助。 – acdcjunior

+0

你可以發佈問題或鏈接它嗎? – 2013-07-03 22:34:53

+2

我不會稱之爲「頂級編碼器」的作者。 – Raedwald

回答

1

我真的沒有時間,現在要研究的問題,但這裏是一個有點簡單化:

// Y2 = Y + (Y = 0) 
int Y2 = Y; 
Y = 0; 

// J2 = J + (J = 0) 
int J2 = J; 
J = 0; 

// Note that, since we've just set Y and J to 0, 
// we may as well have used different variables 

for (int i = 0; i < students.length; i++) 
{ 
    int temp = (students[i] + J2 - 1)/J2; 
    J = Math.max(J, -(Math.max(0, students[i] - Y2) + J2 - 1)/J2 + temp); 
    Y += temp; 
} 
return Y-J; 
+0

非常感謝,幫助了很多 –

相關問題