fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 11
  4. int board[N][N];
  5. bool is_safe(int row,int col)
  6. {
  7. if(row<=10 && col <= 10 && row >= 1 && col >= 1)
  8. {
  9. if(board[row][col])
  10. return false;
  11. else
  12. return true;
  13. }
  14. return false;
  15. }
  16. void solve(int row,int col,int n)
  17. {
  18. if(n == 0)
  19. return;
  20. int ans = 0;
  21. if(is_safe(row-1,col+2))
  22. {
  23. board[row-1][col+2] = 1;
  24. solve(row-1,col+2,n-1);
  25. }
  26. if(is_safe(row+1,col+2))
  27. {
  28. board[row+1][col+2] = 1;
  29. solve(row+1,col+2,n-1);
  30. }
  31. if(is_safe(row-2,col+1))
  32. {
  33. board[row-2][col+1] = 1;
  34. solve(row-2,col+1,n-1);
  35. }
  36. if(is_safe(row+2,col+1))
  37. {
  38. board[row+2][col+1] = 1;
  39. solve(row+2,col+1,n-1);
  40. }
  41. if(is_safe(row-1,col-2))
  42. {
  43. board[row-1][col-2] = 1;
  44. solve(row-1,col-2,n-1);
  45. }
  46. if(is_safe(row+1,col-2))
  47. {
  48. board[row+1][col-2] = 1;
  49. solve(row+1,col-2,n-1);
  50. }
  51. if(is_safe(row-2,col-1))
  52. {
  53. board[row-2][col-1] = 1;
  54. solve(row-2,col-2,n-1);
  55. }
  56. if(is_safe(row+2,col-1))
  57. {
  58. board[row+2][col-1] = 1;
  59. solve(row+2,col-1,n-1);
  60. }
  61. }
  62. void find(int n,int row,int col)
  63. {
  64. for(int i=1;i<=N;i++)
  65. {
  66. for(int j=1;j<=N;j++)
  67. board[i][j] = 0;
  68. }
  69. //board[row][col] = 1;
  70. solve(row,col,n);
  71. int ans = 0;
  72. for(int i=1;i<=N;i++)
  73. {
  74. for(int j=1;j<=N;j++)
  75. {
  76. if(board[i][j])
  77. ans++;
  78. }
  79. }
  80. cout << ans;
  81. }
  82. int main()
  83. {
  84. int n,i,j;
  85. cin >> i >> j >> n;
  86. find(n,i,j);
  87. }
Success #stdin #stdout 0s 4560KB
stdin
3 3 1
stdout
8