By _badass_, history, 3 months ago, ,

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. :)

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. :)

• 0

 » 3 months ago, # |   +1 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.
•  » » 3 months ago, # ^ |   0 Thanks man. I changed the dp dimension but still it doesnt works.
•  » » » 3 months ago, # ^ |   +1 To [15][15][10^9] ?
•  » » » » 3 months ago, # ^ |   0 Yes.
•  » » » » » 3 months ago, # ^ |   +1 Yes because that's too much memory.Would it help if i edit your code ?
•  » » » » » » 3 months ago, # ^ |   0 Sure, it would be great if you can explain the solution with code. Thanks :)
•  » » » » » » » 3 months ago, # ^ |   0 Should work now , feel free to ask any question :D
•  » » » » » » » » 3 months ago, # ^ |   0 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?
•  » » » » » » » » » 3 months ago, # ^ |   0 If i don't take it then i should try another one , that's what the loop is doing ,it tries everything.
•  » » » » » » » » » 3 months ago, # ^ |   +1 Ohh. Yes got it man. Thanks again.
•  » » » » » » » » 3 months ago, # ^ | ← Rev. 2 →   +1 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. :)
•  » » » » » » » » » 3 months ago, # ^ |   0 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
•  » » » » » » » » » 3 months ago, # ^ |   0 thanks.I will try it for sure.
•  » » » » » » 3 months ago, # ^ |   0 Here the problem Links also: http://lightoj.com/volume_showproblem.php?problem=1122