Thursday, 27 July 2017

Lightoj 1122 - Digit Count

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int a[10], dp[11][11];
  4. int n, m;
  5. int calc(int n, int prev){
  6.     if(== 0){
  7.         return 1;
  8.     }
  9.     if(dp[n][prev]!= -1){
  10.         return dp[n][prev];
  11.     }
  12.     int sum = 0;
  13.     for(int i = 0; i <m; i++){
  14.         if(abs(a[i]-prev)<= 2){
  15.             sum+= calc(n-1, a[i]);
  16.         }
  17.     }
  18.     return dp[n][prev] = sum;
  19. }
  20. int main()
  21. {
  22.     int tc;
  23.   scanf("%d"&tc);
  24.   for (int p = 0; p < tc; ++p) {
  25.         cin>>m>>n;
  26.     for(int i = 0; i <m; i++){
  27.         cin>>a[i];
  28.     }
  29.     memset(dp, -1sizeof(dp));
  30.     int sum  = 0;
  31.     for(int i  = 0; i <m; i++){
  32.             sum+= calc(n-1, a[i]);
  33.     }
  34.     cout<<"Case "<<(p+1)<<": "<<sum<<endl;
  35.   }
  36.     return 0;
  37. }
  38.  

No comments:

Post a Comment

Most Featured Post

Lightoj 1159 - Batman

http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...