fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. long long maxNum=0;
  5. int mod = 1e9+7;
  6.  
  7. bool maxDiff(int*a,int n)
  8. {
  9. for(int i=0;i<n-1;i++)
  10. {
  11. if(abs(a[i+1]-a[i]) > 1)
  12. {
  13. return false;
  14. }
  15. }
  16. return true;
  17. }
  18.  
  19. void rec(int n,int m,int*a,int i,int num)
  20. {
  21. if(i == n)
  22. {
  23. if(maxDiff(a,n))
  24. {
  25. maxNum++;
  26. }
  27. return;
  28. }
  29. else
  30. {
  31. if(a[i] == 0)
  32. {
  33. for(int j=1;j<=m;j++)
  34. {
  35. int old=a[i];
  36. a[i] = j;
  37. rec(n,m,a,i+1,num);
  38. a[i] = old;
  39. }
  40. }
  41. else
  42. {
  43. rec(n,m,a,i+1,num);
  44. }
  45. }
  46. }
  47.  
  48. int main() {
  49.  
  50. int n,m;
  51. cin>>n>>m;
  52.  
  53. int a[n];
  54. for(int i=0;i<n;i++)
  55. {
  56. cin>>a[i];
  57. }
  58.  
  59. maxNum=0;
  60. rec(n,m,a,0,1);
  61.  
  62. cout<<maxNum<<endl;
  63. return 0;
  64. }
Success #stdin #stdout 0.01s 5288KB
stdin
3 5
2 0 2
stdout
3