#include<iostream>

#include<vector>

 

using namespace std;

 

int main(void)

{

        int i, j, m, n, k;

        vector<vector<int>> dp;

        vector<int> arr;

 

        cin >> n >> k;

 

        arr.resize(n);

 

        dp.resize(k + 1);

 

        for (i = 0; i <= k; i++)

               dp[i].resize(k + 1);

 

        for (i = 0; i < n; i++)

               cin >> arr[i];

 

        for (i = 1; i <= k; i++)

        {

               m = 0;

 

               while(m+1 <= n)

               {

                       j = arr[m];

                       cout << j << endl;

                       if (i < j)//1<1, 1<2, 1<5  2< 1, 2<2, 2<5

                       {

                              m++;

                              continue;

                       }

 

                       if (m > 1)

                       {

                              if (j > 2)

                                      dp[i][j] = dp[i][arr[m - 1]] + dp[i - arr[m]][j];

                              else

                                      dp[i][j] = dp[i][arr[m - 1]] + dp[i - 1][j] -1;

                       }

 

                       if (i % j == 0)

                              dp[i][j] += 1;

                       m++;

               }

        }

        cout << dp[i][j-1]<<endl;

        return 0;


}


해당 동전의 값이 10이고 그 값을 표현하는 값이 1,2,5라 했을 때 1+1+1+1+1+5,  1+1+1+5+2 이런식으로 경우의수 중복없이 하는 코드인데 돌리다보면 에러가 발생합니다. 무엇때문인가요?