簡單來說,就是要檢查1~n-1的差值是否都存在,差值不一定要3->2->1,也可以是2->3->1,總而言之就是1~n-1的差值都要存在就是Jolly了!
C++(0.008)
/*******************************************************/
/* UVa 10038 Jolly Jumpers */
/* Author: Maplewing [at] knightzone.studio */
/* Version: 2012/03/16 */
/*******************************************************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int main(){
int n;
int jolly[3005];
bool jollyp = 1;
while( scanf( "%d", &n ) != EOF ){
bool jump[3005] = {0};
jollyp = 1;
for( int i = 0 ; i < n ; i++ )
scanf( "%d", &jolly[i] );
for( int i = 1 ; i < n ; i++ ){
if( abs(jolly[i] - jolly[i-1]) >= n ||
abs(jolly[i] - jolly[i-1]) <= 0 ||
jump[abs(jolly[i] - jolly[i-1])] ){
jollyp = 0;
break;
}
jump[abs(jolly[i] - jolly[i-1])] = 1;
}
if( jollyp )
printf( "Jolly\n" );
else
printf( "Not jolly\n" );
}
return 0;
}
abs(jolly[i] – jolly[i-1]) <= 0 你是不是寫錯了 你應該要寫 abs(jolly[i] – jolly[i-1]) == 0因為abs不會小於0
看了一下code,也想不太起來為什麼當時會寫<= 0,
== 0 確實就可以了~ 感謝!
不好意思想請問一下,為什麼要加這段bool jump[3005] = {0}
他有甚麼功用嗎?
用於去紀錄是否每個跳躍的數字都有出現過。