TopcoderArchive
Archive
Algorithm problem

SlidingPenguins

Problem statement, definition, constraints, and public examples.

Problem Statement

Jack 和 Jill åœ¨å—æžç ”ç©¶å·¥ä½œç«™å·¥ä½œã€‚ä¸ºäº†æ¶ˆç£¨æ—¶é—´ï¼Œä»–ä»¬ç»å¸¸çŽ©ä¸€ä¸ªæ¸¸æˆã€‚è¿™ä¸ªæ¸¸æˆåœ¨ä¸€ä¸ªåŒ å«roadLength ä¸ªè·¯æ®µçš„è·¯ä¸Šè¿›è¡Œã€‚æ¯”èµ›å¼€å§‹æ—¶ï¼Œè·¯ä¸Šæœ‰ä¸€äº›ä¼é¹ ï¼›penguins 的第iä¸ªå ƒç´ è¡¨ç¤ºç¬¬iä¸ªä¼é¹ ç«™åœ¨è¿™æ¡è·¯ä¸Šçš„å“ªä¸ªè·¯æ®µï¼ˆä»Ž0开始编号)。比赛的规则如下:

  • Jack 和 Jill 交替进行,Jill å ˆå¼€å§‹ï¼Œåˆå§‹çš„æ—¶å€™ï¼Œæ‰€æœ‰ä¼é¹ éƒ½æ²¡æœ‰ç¡®å®šæ–¹å‘ã€‚
  • 在前Nè½®ï¼Œå ¶ä¸­N表示penguinsä¸­çš„å ƒç´ ä¸ªæ•°ï¼Œå½“å‰çš„æ¸¸æˆè€ é€‰æ‹©æœ€å·¦è¾¹ä¸€ä¸ªæœªå®šå‘çš„ä¼é¹ ï¼Œå¹¶ä¸”ç¡®å®šå®ƒçš„æ–¹å‘æ˜¯å‘å·¦ï¼ˆé¢å‘ç¼–å·æ›´å°çš„è·¯æ®µï¼‰è¿˜æ˜¯å‘å³ï¼ˆé¢å‘ç¼–å·æ›´å¤§çš„è·¯æ®µï¼‰ã€‚ä¸€æ—¦ä¼é¹ è¢«ç¡®å®šæ–¹å‘ï¼Œå®ƒçš„æ–¹å‘æ˜¯ä¸å¯ä»¥è¢«æ”¹å˜çš„ã€‚
  • åœ¨éšåŽçš„æ¸¸æˆä¸­ï¼Œæ¯ä¸€è½®æ¸¸æˆè€ æŒ‘é€‰ä¸€ä¸ªä¼é¹ ï¼Œå¹¶ä¸”è®©å ¶æœå®ƒä¹‹å‰è¢«è®¾å®šçš„æ–¹å‘æ»‘è¡Œã€‚moveLengths åŒ å«äº†ä¼é¹ å¯ä»¥æ»‘è¡Œçš„æ‰€æœ‰æ­¥æ•°ï¼›æ¯”å¦‚ï¼Œ{1, 4, 3}è¡¨ç¤ºä¼é¹ å¯ä»¥å‘å‰æ»‘è¡Œ1、4æˆ–è€ 3æ­¥ï¼Œä½†ç”±æ¸¸æˆè€ æ¥ä»Žä¸­é€‰æ‹©å ·ä½“æ»‘è¡Œå“ªä¸ªæ­¥æ•°ã€‚ä¼é¹ å‘å‰æ»‘è¡Œçš„è¿‡ç¨‹ä¸­ï¼Œä¼šåœ¨å®ƒç¦»å¼€æŸä¸ªè·¯æ®µçš„æ—¶å€™èžåŒ–æŽ‰è¿™ä¸ªè·¯æ®µã€‚è¢«èžåŒ–çš„è·¯æ®µä¸èƒ½è¢«ä»»ä½•ä¼é¹ å†æ¬¡é€šè¿‡æˆ–è€ åœç•™ã€‚ä»»ä½•ä¸€ä¸ªä¼é¹ éƒ½ä¸èƒ½æ»‘å‡ºè¿™æ¡è·¯ï¼Œåˆ°è¾¾æˆ–è€ é€šè¿‡ä¸€ä¸ªè¢«èžåŒ–çš„è·¯æ®µï¼Œä¹Ÿä¸å¯ä»¥åˆ°è¾¾æˆ–é€šè¿‡ä¸€ä¸ªå·²ç»æœ‰å ¶ä»–ä¼é¹ çš„è·¯æ®µã€‚
  • å¦‚æžœä¸€ä¸ªæ¸¸æˆè€ æ— æ³•åšå‡ºä¸€ä¸ªåˆæ³•çš„åŠ¨ä½œï¼Œä»–ï¼ˆå¥¹ï¼‰è¾“æŽ‰è¿™ä¸ªæ¸¸æˆã€‚
  • Jack 和Jill 会一直选择最优策略来进行游戏。

è¯·ç¡®å®šè¿™ä¸ªæ¸¸æˆçš„èŽ·èƒœè€ ã€‚å¦‚æžœJill 获胜,返回"JILL WINS"。否则,返回"JACK WINS"。

Definition

Class:
SlidingPenguins
Method:
determineWinner
Parameters:
int, int[], int[]
Returns:
String
Method signature:
String determineWinner(int roadLength, int[] penguins, int[] moveLengths)
(be sure your method is public)

Constraints

  • roadLength是1到30000之间的整数,含1和30000。
  • penguinsåŒ å«1到50ä¸ªå ƒç´ ï¼Œå«1和50。
  • penguinsä¸­æ¯ä¸ªå ƒç´ éƒ½æ˜¯0到roadLength - 1的整数,含0和roadLength - 1。
  • penguinsä¸­çš„å ƒç´ å·²ç»æŒ‰ç §å‡åºæŽ’åˆ—ï¼Œä¸”æ²¡æœ‰é‡å¤çš„å ƒç´ ã€‚
  • moveLengthsåŒ å«1到50ä¸ªå ƒç´ ï¼Œå«1和50。
  • moveLengthsä¸­æ¯ä¸ªå ƒç´ éƒ½æ˜¯1到30000之间的整数,含1和30000。
  • moveLengthsä¸­æ²¡æœ‰é‡å¤å ƒç´ ã€‚

Examples

  1. 6
    {3}
    {1,2}
    Returns: "JILL WINS"
    Jill ä¼šåœ¨å¥¹çš„ç¬¬ä¸€æ­¥å°†è¿™åªä¼é¹ æ–¹å‘å®šä¸ºå·¦ã€‚å› ä¸ºæ‰€æœ‰çš„ä¼é¹ éƒ½å·²ç»è¢«ç¡®å®šæ–¹å‘ï¼ŒJack ä¸å¾—ä¸å°†è¿™åªä¼é¹ å‘å‰æ»‘è¡Œ1或2步。不管他怎样做,Jillçš„ä¸‹ä¸€æ­¥éƒ½å¯ä»¥å°†è¿™åªä¼é¹ æ»‘è¡Œåˆ°ç‰‡æ®µ0,然后Jack无法做出合法的移动。
  2. 6
    {3}
    {1,2,3}
    Returns: "JACK WINS"
    不管 Jill å°†è¿™åªä¼é¹ å¦‚ä½•å®šå‘ï¼ŒJackéƒ½å¯ä»¥ç§»åŠ¨è¿™åªä¼é¹ ä½¿å¾—Jill输。
  3. 6
    {0,5}
    {1,3}
    Returns: "JACK WINS"
  4. 15
    {1, 4, 9, 12}
    {2, 5, 4}
    Returns: "JILL WINS"
  5. 1234
    {1,35,82,193,203,299,303,388,509,684,718,994,1111,1223}
    {1,4,8,3,91,12,40,31,13}
    Returns: "JILL WINS"
Back to all problems