2008年3月12日 星期三

Problem 10038 Jolly Jumpers,計算數列差

這個題目說的不是很明白,文中說明Jolly jumper是一個數列序列,內容包含了1到n-1之間的每一個數,可是題目所舉例之相鄰數字差的絕對值為連續的 3 2 1,所以會誤解說是不是要按大小排列,其實,題目中的Jolly jumper所指的1到n-1 之數列是要求,每一個數字都要有,但不用按序排,可以是任何排列。只是範例恰巧由大到小(八成是故意的)。
下列附上程式的重點內容,我用了一個整數陣列來存放這些差值,每個差值出現一次,就在該陣列的相關位置累進 1,算完後,只要看看這個陣列的每個值,如果都是 1,那就是Jolly,只要有 1 以外的數字,就不是Jolly。
for (i=0;i<seqNum-1;i++)
{
scanf("%d",&x2);
if (x1>x2)
diff = x1-x2;
else
diff = x2-x1;
x1 = x2;
if (0<diff && diff<seqNum)
n[diff]++;
else
{
isJolly = 0;
}
}

p10038題目連結
回ACM題庫目錄
回首頁

沒有留言: