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