コード
html
1import java.util.Scanner; 2public class TypicalStairs { 3 public static void main(String[] args){ 4 Scanner scan=new Scanner(System.in); 5 int N=scan.nextInt(); 6 int M=scan.nextInt(); 7 int[] a=new int[M]; 8 for(int i=0;i<M;i++){ 9 a[i]=scan.nextInt(); 10 if(i!=0){ 11 if(a[i]-a[i-1]==1){ 12 System.out.println(0); 13 return ; 14 } 15 } 16 } 17 long[] dp=new long[N+1]; 18 dp[0]=1; 19 int j=0; 20 for(int i=0;i<N;i++){ 21 if((i+1)!=a[j]){ 22 if(i==0) dp[i+1]=dp[i]; 23 else dp[i+1]=dp[i]+dp[i-1]; 24 j++; 25 } 26 else dp[i+1]=0; 27 } 28 System.out.println(dp[N]%1000000007); 29 } 30}
#入力とエラーメッセージ
6 1
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at TypicalStairs.main(TypicalStairs.java:21)
#質問内容
エラーメッセージを見ると配列にいれられていないということだと思うのですが,なぜこうなってしまうのか教えていただきたいです。
入力の場所は21行目ではないのにここでこうなってしまう理由が全く分からないです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/16 12:33
2020/05/16 13:20
2020/05/17 05:59
2020/05/18 14:49
2020/05/19 10:31