【问题标题】:NZEC error for ACODE spojACODE spoj 的 NZEC 错误
【发布时间】:2017-10-09 04:10:06
【问题描述】:

我正在解决SPOJ的Acode问题,是一个简单的Dp问题here

这是我的解决方案:

//http://www.spoj.com/problems/ACODE/

import java.util.Scanner;
//import java.util.Math;
public class Acode {
  public static void main(String[] args)
   {
     Scanner sc = new Scanner(System.in);

     String encodedString = sc.next();
     while (!encodedString.equals("0")) {
       long number = numOfDecodings(encodedString);
       System.out.println(number);
       encodedString = sc.next();
     }

     return;

   }

    public static long numOfDecodings(String encodedString)
    {
         int lengthOfString = encodedString.length();
           long decode[] = new long[lengthOfString];

         decode[0] = 1;

         if (isCurrentTwoDigitsValid(encodedString, 1)) {
             decode[1] = 2;
         } else {
             decode[1] = 1;
         }

         for (int i=2; i<lengthOfString; i++) {
              if (isCurrentTwoDigitsValid(encodedString, i)) {
                   decode[i] = decode[i-2] + decode[i-1];
              } else {
                   decode[i] = decode[i-1];
              }
         }

         return decode[lengthOfString-1];
    }

    public static boolean isCurrentTwoDigitsValid(String encodedString, int startIndex)
    {
        char c1 = encodedString.charAt(startIndex);
        char c2 = encodedString.charAt(startIndex-1);

        if ( (c2=='1') || (c2=='2' && c1<='6')) {
           return true;
        } else {
           return false;  
        }

    }


}

但是当我尝试提交它时,我收到了一个 NZEC 错误。我也测试了它的大值并且它没有破坏。我不知道如何改进它。

【问题讨论】:

    标签: java algorithm dynamic-programming


    【解决方案1】:
    1. 当输入大小为1 时,会出现错误

      if (isCurrentTwoDigitsValid(encodedString, 1)) {
          decode[1] = 2;
      } else {
          decode[1] = 1;
      } 
      

      因为访问超出了decode 数组边界。

    2. 您将0 视为有效数字,但事实并非如此。例如,输入"10" 的正确答案是1,而不是2

    【讨论】:

    • 非常感谢。错过了这些极端情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多