#UVa:10038-Jolly Jumpers

簡單來說,就是要檢查1~n-1的差值是否都存在,差值不一定要3->2->1,也可以是2->3->1,總而言之就是1~n-1的差值都要存在就是Jolly了!

C++(0.008)

/*******************************************************/
/* UVa 10038 Jolly Jumpers                             */
/* Author: LanyiKnight [at] knightzone.org             */
/* 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;
}

迴響 (4)

  1. KAIKAIKAI
    2016-08-22 @ 14:19:10

    abs(jolly[i] – jolly[i-1]) <= 0 你是不是寫錯了 你應該要寫 abs(jolly[i] – jolly[i-1]) == 0因為abs不會小於0

    回覆
    • 2016-09-02 @ 10:05:18

      看了一下code,也想不太起來為什麼當時會寫<= 0,
      == 0 確實就可以了~ 感謝!

      回覆
  2. 2017-09-26 @ 16:07:15

    不好意思想請問一下,為什麼要加這段bool jump[3005] = {0}
    他有甚麼功用嗎?

    回覆

發表迴響