emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks


          Problem Statement
          ????
          When editing a single line of text, there are four keys that can be used to move the cursor: end, home, left-arrow and right-arrow. As you would expect, left-arrow and right-arrow move the cursor one character left or one character right, unless the cursor is at the beginning of the line or the end of the line, respectively, in which case the keystrokes do nothing (the cursor does not wrap to the previous or next line). The home key moves the cursor to the beginning of the line, and the end key moves the cursor to the end of the line.  You will be given a int, N, representing the number of character in a line of text. The cursor is always between two adjacent characters, at the beginning of the line, or at the end of the line. It starts before the first character, at position 0. The position after the last character on the line is position N. You should simulate a series of keystrokes and return the final position of the cursor. You will be given a String where characters of the String represent the keystrokes made, in order. 'L' and 'R' represent left and right, while 'H' and 'E' represent home and end.
          Definition
          ????
          Class:
          CursorPosition
          Method:
          getPosition
          Parameters:
          String, int
          Returns:
          int
          Method signature:
          int getPosition(String keystrokes, int N)
          (be sure your method is public)
          ????

          Constraints
          -
          keystrokes will be contain between 1 and 50 'L', 'R', 'H', and 'E' characters, inclusive.
          -
          N will be between 1 and 100, inclusive.
          Examples
          0)

          ????
          "ERLLL"
          10
          Returns: 7
          First, we go to the end of the line at position 10. Then, the right-arrow does nothing because we are already at the end of the line. Finally, three left-arrows brings us to position 7.
          1)

          ????
          "EHHEEHLLLLRRRRRR"
          2
          Returns: 2
          All the right-arrows at the end ensure that we end up at the end of the line.
          2)

          ????
          "ELLLELLRRRRLRLRLLLRLLLRLLLLRLLRRRL"
          10
          Returns: 3

          3)

          ????
          "RRLEERLLLLRLLRLRRRLRLRLRLRLLLLL"
          19
          Returns: 12

          This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.



          沒有難度

          public class CursorPosition {
          public int getPosition(String keystrokes, int N){
              
          int p = 0;
              
          if(keystrokes.lastIndexOf("H")>-1)
                  keystrokes
          =keystrokes.substring(keystrokes.lastIndexOf("H")+1);
              
          if(keystrokes.lastIndexOf("E")>-1){
                  keystrokes
          =keystrokes.substring(keystrokes.lastIndexOf("E")+1);
                  p
          =N;
              }

              
          for(int i=0;i<keystrokes.length();i++){
                  
          if(keystrokes.charAt(i)=='R')
                      p
          +=(p<N)?1:0;
                  
          else 
                      p
          -=(p>0)?1:0;
              }

              
          return p;
          }

          public static void main(String[] args){
              System.out.println(
          new CursorPosition().getPosition("ERLLL",10));
              System.out.println(
          new CursorPosition().getPosition("EHHEEHLLLLRRRRRR",2));
              System.out.println(
          new CursorPosition().getPosition("ELLLELLRRRRLRLRLLLRLLLRLLLLRLLRRRL",10));
              System.out.println(
          new CursorPosition().getPosition("RRLEERLLLLRLLRLRRRLRLRLRLRLLLLL",19));
              System.out.println(
          new CursorPosition().getPosition("R",9));

          }

          }

          posted on 2005-12-01 16:57 emu 閱讀(1615) 評論(6)  編輯  收藏 所屬分類: google編程大賽模擬題及入圍賽真題

          評論

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-06 21:31 Merlin Ran
          這樣的題就不用拿來現(xiàn)眼了吧。要真的比賽時,這題也就值100分。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-06 22:17 emu
          就是啊,這次中國錦標(biāo)賽的模擬題比上次東亞大賽的模擬題差的太遠(yuǎn)了,完全沒有挑戰(zhàn)性。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-07 21:30 Merlin Ran
          我今天一直在后悔上面的評論,還好看來你沒生氣。
          這題就是讓大家熟悉比賽環(huán)境的,肯定不代表入圍賽的題目難度。真正的題恐怕不會比NewStation更容易。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-08 00:45 emu
          呵呵,對自己有信心,就不會理解成自己現(xiàn)眼了。不過這樣的模擬題對沒看過以前的題目的人有很強(qiáng)的誤導(dǎo)性,都以為1000分就這么好拿,到時就傻眼了。懷疑google想多蒙些人來捧場。
          此外這道題我第一次做也是做錯了的(現(xiàn)眼了),在系統(tǒng)自動測試的時候才發(fā)現(xiàn),原來位置是從0到n,不是從1到n。所以題目容易也要仔細(xì)讀題。上次東亞大賽的時候有一道題就是沒有搞清楚輸出結(jié)果是要排序的丟了分。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-10 00:24 小飛俠
          public class CursorPosition {
          public static int getPosition(String commonds, int ncount) {
          //獲取開始查詢的位置
          int fromIndex1, fromIndex2, fromIndex, position;

          fromIndex1 = commonds.lastIndexOf((int)'E');
          fromIndex2 = commonds.lastIndexOf((int)'H');
          if (fromIndex1 > fromIndex2) {
          fromIndex = fromIndex1 >0 ? fromIndex1 : 0;
          position = ncount;
          } else {
          fromIndex = fromIndex2 > 0 ? fromIndex2 : 0;
          position = 0;
          }

          //取字符串的字符,開始進(jìn)行統(tǒng)計
          for (int i = fromIndex + 1; i < commonds.length(); i++) {
          System.out.println(commonds.charAt(i));
          switch(commonds.charAt(i)) {
          case 'L' :
          position = (position == 0) ? 0 : --position;
          break;
          case 'R' :
          position = (position == ncount) ? ncount : ++position;
          break;
          default :
          break;
          }
          }

          return position;
          }
          }   回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-10 00:27 小飛俠
          //簡單的方法
          public class CursorPosition {
          public int getPosition(String commonds, int ncount) {
             int position = 0;
          for (int i = 0; i < commonds.length(); i++) {
          switch(commonds.charAt(i)) {
          case 'H' :
          position = 0;
          break;
          case 'E' :
          position = ncount;
          break;
          case 'R' :
          position = position < ncount ? positon++ : ncount;
          break;
          case 'L' :
          position = position >0 ? position-- : 0;
          break;
          default :
          break;
          }
          } 

          return position;    
            }
          }  回復(fù)  更多評論
            

          主站蜘蛛池模板: 万年县| 海林市| 石柱| 东城区| 襄汾县| 葫芦岛市| 余江县| 乌兰县| 佛冈县| 平泉县| 揭阳市| 阿图什市| 韶山市| 泽普县| 图们市| 贵州省| 辰溪县| 纳雍县| 腾冲县| 崇信县| 沙田区| 漠河县| 平顺县| 奉新县| 苗栗市| 伊宁县| 治多县| 花垣县| 咸丰县| 嵊泗县| 普兰店市| 崇信县| 奉贤区| 尉犁县| 亳州市| 五家渠市| 仪征市| 康定县| 罗平县| 泰宁县| 新乡县|