#UVa:10038-Jolly Jumpers

灆洢 2011-11-29 22:14:13

簡單來說,就是要檢查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;
}

在〈“#UVa:10038-Jolly Jumpers”〉中有 4 則留言

  1. KAIKAIKAI表示:

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

  2. 表示:

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

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料