fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. bool isHorisontalAvailable(vector<vector<int>> &board, int i, int n) {
  6. for(int x=0; x<n; x++) {
  7. if(board[i][x] != 0) {
  8. return false;
  9. }
  10. }
  11. return true;
  12. }
  13.  
  14. bool isVerticalAvailable(vector<vector<int>> &board, int j, int n) {
  15. for(int y=0; y<n; y++) {
  16. if(board[y][j] > 0) {
  17. return false;
  18. }
  19. }
  20. return true;
  21. }
  22.  
  23. bool isFirstDiagonalAvailable(vector<vector<int>> &board, int i, int j, int n) {
  24. while(i>=0 && j >=0) {
  25. if(board[i--][j--] > 0) {
  26. return false;
  27. }
  28. }
  29. while(i<n && j<n) {
  30. if(board[i++][j++] > 0) {
  31. return false;
  32. }
  33. }
  34. return true;
  35. }
  36.  
  37. bool isSecondDiagonalAvailable(vector<vector<int>> &board, int i, int j, int n){
  38. while(i>=0 && j<n) {
  39. if(board[i--][j++] > 0) {
  40. return false;
  41. }
  42. }
  43. while(i>=0 && j<n) {
  44. if(board[i--][j++] > 0) {
  45. return false;
  46. }
  47. }
  48. return true;
  49. }
  50.  
  51. bool verifyIfCellAvailable(vector<vector<int>> &board, int i, int j, int n) {
  52. return (isHorisontalAvailable(board, i, n) && isVerticalAvailable(board, j, n) &&
  53. isFirstDiagonalAvailable(board, i, j, n) && isSecondDiagonalAvailable(board, i, j, n));
  54. }
  55.  
  56. int getNumber(vector<vector<int>> &board, int n) {
  57. int i;
  58. int j;
  59. for(i = 0; i<n; i++) {
  60. for(j = 0; j<n; j++) {
  61. if(board[i][j] == 0) {
  62. bool isAvailable = isHorisontalAvailable(board, i, n);//verifyIfCellAvailable(board, i, j, n);
  63. if(isAvailable){
  64. board[i][j] = 1;
  65. return 1 + getNumber(board, n);
  66. }
  67. }
  68. }
  69. }
  70. return 0;
  71. }
  72.  
  73. int main() {
  74. int n = 5;
  75. //cin>>n;
  76. vector<vector<int>> v;
  77. v.reserve(n);
  78. for(int i = 0; i<n; i++) {
  79. v[i].reserve(n);
  80. for(int j = 0; j<n; j++) {
  81. v[i][j]=0;
  82. }
  83. }
  84. cout<<getNumber(v,n);
  85. return 0;
  86. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
5