Hy, I am trying solve the problem but not the full problem firstly I am trying to solve the sub part which is I want to count the number of digit which length is n but all digit in n is unique and every digit between difference is maximum 2. After that I will go through the main part of the problem. But the first part of my code doesn't work.

My code idea : I want to count the number of integer with n length from the set of digits s. but My code doesn't work properly. :)

My code link: http://ideone.com/KLcphT

It would be great if u tell me which I am missing.

Full problem: Given a set of digits S, and an integer n, you have to find how many n-digit integers are there, which contain digits that belong to S and the difference between any two adjacent digits is not more than two. Input

Input starts with an integer T (≤ 300), denoting the number of test cases.

Each case contains two integers, m (1 ≤ m < 10) and n (1 ≤ n ≤ 10). The next line will contain m integers (from 1 to 9) separated by spaces. These integers form the set S as described above. These integers will be distinct and given in ascending order.

Output

For each case, print the case number and the number of valid n-digit integers in a single line. Sample Input

Output for Sample Input

3

3 2

1 3 6

3 2

1 2 3

3 3

1 4 6

Case 1: 5

Case 2: 9

Case 3: 9 Note

For the first case the valid integers are

11

13

31

33

66

Thanks a lot. And sorry for my really really poor English. :)

Hello , your problem here is that "dg" can be up to 10^9 however your dp dimensions for the third dimension is just 15 .

The function "oka" that verify if the built n-digits is valid or not is not needed at all since you can check that ongoing if you pass the last taken digit as a paramater , so that will suit your dp dimensions that you did set , hope this helped.

Thanks man. I changed the dp dimension but still it doesnt works.

To [15][15][10^9] ?

Yes.

Yes because that's too much memory.

Would it help if i edit your code ?

Sure, it would be great if you can explain the solution with code. Thanks :)

https://ideone.com/inpadg

Should work now , feel free to ask any question :D

Why we didnt call another call in line 58 like solve(i,a[j]) thats mean either either i take the digit or cannot take. shoudn't be like this?

If i don't take it then i should try another one , that's what the loop is doing ,it tries everything.

Ohh. Yes got it man. Thanks again.

All other parts are clear thanks a lot man. Also can you suggest me this type of dp. Where i can learn new things gradually. Thanks. :)

Your are welcome :)

Try atcoder educational dp round it has a lot of good starting dp problems to learn from.

https://atcoder.jp/contests/dp

thanks.I will try it for sure.

Here the problem Links also: http://lightoj.com/volume_showproblem.php?problem=1122