Problem Statement
âæºå¨äººå½çâæ¯ä¸ä¸ªæ¯è¾å¤æç游æãä¸ä¸ªç©å½¢æ£çå岿NxMä¸ªæ ¼åãç©å®¶å¿
é¡»ææ£çä¸çå½çç§»å¨å°å¤ä¸ªè婿 ¼åä¸çä»»ä¸ä¸ªã使¯è¿æå¤ä¸ªæºå¨äººä¹è½å¤ç§»å¨å½çï¼è¿ä½¿å¾ç©å®¶çç®æ å¾é¾è¾¾å°ãç©å®¶å¯ä¸çä¼å¿æ¯ä»æå
æã
å¨ç©å®¶æ¯æ¬¡ç§»å¨æ¶ï¼ä»å¯ä»¥æç §å¯¹è§çº¿ï¼æ°´å¹³æè åç´æ¹åæå½çç§»å¨å°ä¸ä¸ªç¸é»çç©ºæ ¼åä¸ãä»ä¹å¯ä»¥éæ©ä¸ç§»å¨å½çãä¹åæ¯ä¸ªæºå¨äººä¼ä¾æ¬¡è¡å¨ãæ¯ä¸ªæºå¨äººé½æä¸ä¸ªé¢å®å¥½çæ¹å (ä¸ãä¸ãå·¦ãå³)ï¼åªè¦è¯¥æ¹å没æéç¢ç©ï¼ä»ä»¬å°±ä¼æç §é¢å®çæ¹åç§»å¨å½çãå¦æç¢°å°éç¢ç©ï¼æºå¨äººå¨è¯¥è½®ä¸ç§»å¨å½çã
ç©å®¶å¨å½çç§»å¨å°è婿 ¼åæ¶è·èãæ è®ºæ¯ç©å®¶èªå·±è¿æ¯æºå¨äººæå½çç§»å¨å°è婿 ¼åï¼ç©å®¶é½ç®èå©ãæä¸¤ç§æ åµç©å®¶ä¼å¤±è´¥ï¼
- æä¸ªæºå¨äººæå½çç§»å¨å°æ£çå¤ã
- ç©å®¶åæ¯ä¸ªæºå¨äººæ¯æ¬¡è¡å¨ï¼å³ä¾¿ä¸ç§»å¨ï¼é½ç®ä¸è½®ï¼å¨maxTurnsè½®åï¼å½çä¸ç´æ²¡è½å°è¾¾è婿 ¼åã
ç©å®¶å¨æå¼å§æ¯ä¸ç¥éæºå¨äººçé¢å®æ¹åçãä»åªç¥éæ¯ä¸ªæºå¨äººæä¸¤ä¸ªå¯è½çé¢å®æ¹åååèªçæ¦çãè¿ä¸ªä¿¡æ¯ä¼éè¿String[] robotMovesç»åºï¼å ¶ä¸æ¯ä¸ªå ç´ è¡¨ç¤ºä¸ä¸ªæºå¨äººãæ¯ä¸ªå ç´ é½ä¸º"Direction1 Direction2 P"è¿æ ·çæ ¼å¼ï¼å¼å·åªæ¯ç¨äºè§£éï¼ï¼å ¶ä¸Pæ¯ä¸ä¸ªæ´æ°ï¼ä»£è¡¨äºDirection1çæ¦çãæ¯ä¸ªDirection1ï¼Direction2齿¯"D"ã"U"ã"L"ã"R"ä¸çä¸ä¸ªï¼å¼å·åªæ¯ç¨äºè§£éï¼ï¼è¿äºåæ¯ä¾æ¬¡è¡¨ç¤ºä¸ãä¸ãå·¦ãå³ãæ¯ä¸ªæºå¨äººçæ¹åæ¯å¨æ¸¸æä¸å¼å§å°±ç¡®å®ä¸æ¥çï¼å¹¶ä¸å¨æ´ä¸ªæ¸¸æä¸é½ä¸ä¼æ¹åãæºå¨äººå¨robotMovesä¸ç顺åºä¹å°±æ¯ä»ä»¬è¡å¨ç顺åºã
ç»å®String[] board表示æ£ççä¿¡æ¯ãboardä¸ç¬¬i个å ç´ ç第j个å符表示æ£çç第iè¡ï¼jåï¼å ¶ä¸ç¬¬0è¡æ¯æä¸é¢ä¸è¡ï¼ç¬¬N-1è¡æ¯æä¸é¢ä¸è¡ï¼ç¬¬0忝æå·¦è¾¹ä¸åï¼ç¬¬M-1忝æå³è¾¹ä¸åã'K'æ¯å½ççèµ·å§ä½ç½®ï¼'S'æ¯ä¸ä¸ªè婿 ¼åï¼'.'æ¯ç©ºæ ¼åï¼'#'æ¯éç¢ç©ãå设ç©å®¶éåæä¼ççç¥ï¼è¿åç©å®¶èµ¢å¾æ¸¸æçæ¦çã
å¨ç©å®¶æ¯æ¬¡ç§»å¨æ¶ï¼ä»å¯ä»¥æç §å¯¹è§çº¿ï¼æ°´å¹³æè åç´æ¹åæå½çç§»å¨å°ä¸ä¸ªç¸é»çç©ºæ ¼åä¸ãä»ä¹å¯ä»¥éæ©ä¸ç§»å¨å½çãä¹åæ¯ä¸ªæºå¨äººä¼ä¾æ¬¡è¡å¨ãæ¯ä¸ªæºå¨äººé½æä¸ä¸ªé¢å®å¥½çæ¹å (ä¸ãä¸ãå·¦ãå³)ï¼åªè¦è¯¥æ¹å没æéç¢ç©ï¼ä»ä»¬å°±ä¼æç §é¢å®çæ¹åç§»å¨å½çãå¦æç¢°å°éç¢ç©ï¼æºå¨äººå¨è¯¥è½®ä¸ç§»å¨å½çã
ç©å®¶å¨å½çç§»å¨å°è婿 ¼åæ¶è·èãæ è®ºæ¯ç©å®¶èªå·±è¿æ¯æºå¨äººæå½çç§»å¨å°è婿 ¼åï¼ç©å®¶é½ç®èå©ãæä¸¤ç§æ åµç©å®¶ä¼å¤±è´¥ï¼
- æä¸ªæºå¨äººæå½çç§»å¨å°æ£çå¤ã
- ç©å®¶åæ¯ä¸ªæºå¨äººæ¯æ¬¡è¡å¨ï¼å³ä¾¿ä¸ç§»å¨ï¼é½ç®ä¸è½®ï¼å¨maxTurnsè½®åï¼å½çä¸ç´æ²¡è½å°è¾¾è婿 ¼åã
ç©å®¶å¨æå¼å§æ¯ä¸ç¥éæºå¨äººçé¢å®æ¹åçãä»åªç¥éæ¯ä¸ªæºå¨äººæä¸¤ä¸ªå¯è½çé¢å®æ¹åååèªçæ¦çãè¿ä¸ªä¿¡æ¯ä¼éè¿String[] robotMovesç»åºï¼å ¶ä¸æ¯ä¸ªå ç´ è¡¨ç¤ºä¸ä¸ªæºå¨äººãæ¯ä¸ªå ç´ é½ä¸º"Direction1 Direction2 P"è¿æ ·çæ ¼å¼ï¼å¼å·åªæ¯ç¨äºè§£éï¼ï¼å ¶ä¸Pæ¯ä¸ä¸ªæ´æ°ï¼ä»£è¡¨äºDirection1çæ¦çãæ¯ä¸ªDirection1ï¼Direction2齿¯"D"ã"U"ã"L"ã"R"ä¸çä¸ä¸ªï¼å¼å·åªæ¯ç¨äºè§£éï¼ï¼è¿äºåæ¯ä¾æ¬¡è¡¨ç¤ºä¸ãä¸ãå·¦ãå³ãæ¯ä¸ªæºå¨äººçæ¹åæ¯å¨æ¸¸æä¸å¼å§å°±ç¡®å®ä¸æ¥çï¼å¹¶ä¸å¨æ´ä¸ªæ¸¸æä¸é½ä¸ä¼æ¹åãæºå¨äººå¨robotMovesä¸ç顺åºä¹å°±æ¯ä»ä»¬è¡å¨ç顺åºã
ç»å®String[] board表示æ£ççä¿¡æ¯ãboardä¸ç¬¬i个å ç´ ç第j个å符表示æ£çç第iè¡ï¼jåï¼å ¶ä¸ç¬¬0è¡æ¯æä¸é¢ä¸è¡ï¼ç¬¬N-1è¡æ¯æä¸é¢ä¸è¡ï¼ç¬¬0忝æå·¦è¾¹ä¸åï¼ç¬¬M-1忝æå³è¾¹ä¸åã'K'æ¯å½ççèµ·å§ä½ç½®ï¼'S'æ¯ä¸ä¸ªè婿 ¼åï¼'.'æ¯ç©ºæ ¼åï¼'#'æ¯éç¢ç©ãå设ç©å®¶éåæä¼ççç¥ï¼è¿åç©å®¶èµ¢å¾æ¸¸æçæ¦çã
Definition
- Class:
- RobotKing
- Method:
- calculateWinProbability
- Parameters:
- int, String[], String[]
- Returns:
- double
- Method signature:
- double calculateWinProbability(int maxTurns, String[] robotMoves, String[] board)
- (be sure your method is public)
Notes
- è½ç¶ç©å®¶å¨æå¼å§ä¸ç¥éæ¯ä¸ªæºå¨äººçé¢è®¢æ¹åï¼ä½æ¯å¨æºå¨äººè¡å¨åï¼å¦ææå®é ç§»å¨ï¼ç©å®¶å°±è½å¤ç¥éè¿ä¸ªæºå¨äººå¯¹åºçæ¹åå¹¶æè¿ä¸ªä¿¡æ¯ç¨äºä¹åçå³çä¸ã
- è¿åå¼å¿ é¡»ä¿è¯ç»å¯¹åç¸å¯¹è¯¯å·®ä¸è¶ è¿1e-9ã
Constraints
- maxTurns åå¼äº1å°100ï¼å«1å100ï¼ã
- robotMoves å å«1å°5个å ç´ ï¼å«1å5ï¼ã
- robotMovesä¸çæ¯ä¸ªå ç´ é½æ¯å¦é¢ç®æè¿°ä¸æè¯´ç"Direction1 Direction2 P"æ ¼å¼ï¼å¹¶ä¸æå¼å§åæå齿²¡æå¤ä½ç©ºæ ¼ï¼ç¸é»å ç´ ä¹é´ä»¥ä¸ä¸ªç©ºæ ¼åéã
- robotMoves çåä¸ä¸ªå ç´ ä¸çDirection1åDirection2æ¯è¯å®ä¸åçã
- robotMovesä¸çæ¯ä¸ªPé½å¨0å°100ä¹é´ï¼å«0å100ï¼ã
- robotMovesä¸çææP齿²¡ææ æä¹ç0åç¼ã
- boardå å«2å°15个å ç´ ï¼å«2å15ï¼ã
- boardçæ¯ä¸ªå ç´ å å«2å°15个å符ï¼å«2å15ï¼ã
- boardçæ¯ä¸ªå ç´ é½å å«ç¸å个æ°çå符ã
- boardçæ¯ä¸ªå ç´ é½åªå å«'K'ã'.'ã'S'å'#'ã
- boardå 嫿æ°å¥½ä¸ä¸ª'K'ã
- boardå å«è³å°ä¸ä¸ª'S'ã
Examples
10
{"R L 25"}{"S.", "..", "..", "K."}Returns: 0.75
33
{"U D 50", "R L 100", "R L 100"}{"...", "K.S", "..."}Returns: 1.0
è¿ä¸ªä¾åä¸çæå¥½çç¥æ¯å¨ç¬¬ä¸è½®ä¸ç§»å¨å½çã5
{"R L 50", "R L 50"}{"S..###", "##..##", "###.K#"}Returns: 0.25
åªæä¸ç§å¯è½æå½çå¨5è½®æè 以å ç§»å¨å°è婿 ¼åï¼ä¹å°±æ¯ä¸¤ä¸ªæºå¨äººé¢è®¢ç§»å¨æ¹å齿¯åå·¦çæ åµã50
{"D U 100", "U R 47"}{".......S", "S...####", "...#K###"}Returns: 1.0
第ä¸ä¸ªæºå¨äººçç§»å¨æ¹åæ¯100%åä¸çï¼è第äºä¸ªæºå¨äººçç§»å¨æ¹åæ¯å䏿è åå³ãå¨ç©å®¶ç¬¬ä¸æ¬¡ç§»å¨æ¶ï¼ä»åºè¯¥æå½ç沿对è§çº¿å左䏿 ¼åç§»å¨ãä¹å第ä¸ä¸ªæºå¨äººå 为ä¸é¢æ ¼åæéç¢ç©èä¸ä¼ç§»å¨å½çãè第äºä¸ªæºå¨äººå¯è½åä¸ç§»å¨æè å 为å³ä¾§æéç¢ç©èä¸ç§»å¨ãä¸¤ç§æ åµä¸ï¼ç©å®¶é½ä¼ç¥éè¿ä¸ªæºå¨äººçé¢è®¢ç§»å¨æ¹åã妿æ¯åä¸ï¼åç©å®¶å¯ä»¥éè¿å°è¾¾å·¦ä¾§çè婿 ¼åè·èï¼å¦ææ¯åå³ï¼åç©å®¶å¯ä»¥éè¿å°è¾¾å³ä¾§çè婿 ¼åèè·èã5
{"L D 50"}{"####K", "###.#", "#..##", "S..S#"}Returns: 1.0
第ä¸è½®ç©å®¶åå·¦ä¸ç§»å¨å½çï¼ç¬¬äºè½®æºå¨äººæ¯æ æ³ç§»å¨çï¼æä»¥ç©å®¶ä»ç¶ä¸ç¥éæºå¨äººçé¢è®¢æ¹åã第ä¸è½®ç©å®¶ååå·¦ä¸è§ç§»å¨åï¼æºå¨äººå¯ä»¥åå·¦æè ä¸ç§»å¨ãç©å®¶ç¥éäºæºå¨äººçé¢è®¢æ¹ååï¼å³å®ååªä¸ªè婿 ¼åç§»å¨ï¼åå¯ä»¥å¨5è½®å è·èã