1
私はSPOJ.ItのACODE問題を解決していますが、単純なDpの問題hereNZECエラーが
あるspojこれは私のソリューションです:
//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エラーを取得していますそれを提出する。私も大きな値のためにそれをテストし、それが壊れていない。私はそれを改善する方法を理解していない。
ありがとうございました。これらのエッジケースがミスしました。 – MaPY