fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int B[10][10];
  4. bool V[10];
  5. int R[10];
  6. int sr,sc,ts;
  7. void prgr(){
  8. for(int i=0;i<8;i++){
  9. for(int j=0;j<8;j++){
  10. printf("%d ",B[i][j]);
  11. }
  12. printf("\n");
  13. }
  14. }
  15. void queen(int x,int y,int c)
  16. {
  17. c++;
  18. for(int i=0;i<8;i++){
  19. if(B[x][i]==0){
  20. B[x][i]=c;
  21. }
  22. if(B[i][y]==0){
  23. B[i][y]=c;
  24. }
  25. }
  26. for(int i=0;i<8;i++){
  27. for(int j=0;j<8;j++){
  28. if(i==x||j==y||abs(i-x)==abs(j-y)){
  29. if(B[i][j]==0) B[i][j]=c;
  30. }
  31. }
  32. }
  33. B[x][y]=10;
  34. //prgr();
  35. //system("pause");
  36. }
  37. void unqueen(int x,int y,int c)
  38. {
  39. c++;
  40. for(int i=0;i<8;i++){
  41. if(B[x][i]==c){
  42. B[x][i]=0;
  43. }
  44. if(B[i][y]==c){
  45. B[i][y]=0;
  46. }
  47. }
  48. for(int i=0;i<8;i++){
  49. for(int j=0;j<8;j++){
  50. if(i==x||j==y||abs(i-x)==abs(j-y)){
  51. if(B[i][j]==c) B[i][j]=0;
  52. }
  53. }
  54. }
  55. B[x][y]=0;
  56. }
  57. void backtrack(int c)
  58. {
  59. for(int j=0;j<8;j++){
  60. if(c==sc){
  61. c++;
  62. }
  63. else if(B[c][j]==0&&V[j]==false){
  64. queen(c,j,c);
  65. V[j]=true;
  66. R[c]=j;
  67. backtrack(c+1);
  68. V[j]=false;
  69. unqueen(c,j,c);
  70. }
  71. }
  72. if(c==8){
  73. //prgr();
  74. //system("pause");
  75. printf("%2d ",++ts);
  76. for(int i=0;i<8;i++)printf(" %d",R[i]+1);
  77. printf("\n");
  78. return;
  79. }
  80. }
  81. int main()
  82. {
  83. //freopen("input.txt","r",stdin);
  84. //freopen("output.txt","w",stdout);
  85. int t,q=0;
  86. scanf("%d",&t);
  87. while(q!=t){
  88. if(q++!=0)printf("\n");
  89. for(int i=0;i<8;i++){
  90. for(int j=0;j<8;j++){
  91. B[i][j]=false;
  92. }
  93. R[i]=0;
  94. V[i]=false;
  95. }
  96. scanf("%d %d",&sr,&sc);
  97. sr--,sc--;
  98. queen(sc,sr,sc);
  99. //prgr();
  100. //system("pause");
  101. R[sc]=sr;
  102. V[sr]=true;
  103. ts=0;
  104. printf("SOLN COLUMN\n");
  105. printf(" # 1 2 3 4 5 6 7 8\n");
  106. printf("\n");
  107. backtrack(0);
  108. }
  109. return 0;
  110. }
  111.  
Success #stdin #stdout 0s 4348KB
stdin
1

3 1
stdout
SOLN       COLUMN
 #      1 2 3 4 5 6 7 8

 1      3 5 2 8 1 7 4 6
 2      3 5 2 8 6 4 7 1
 3      3 5 7 1 4 2 8 6
 4      3 5 8 4 1 7 2 6
 5      3 6 2 5 8 1 7 4
 6      3 6 2 7 1 4 8 5
 7      3 6 2 7 5 1 8 4
 8      3 6 4 1 8 5 7 2
 9      3 6 4 2 8 5 7 1
10      3 6 8 1 4 7 5 2
11      3 6 8 1 5 7 2 4
12      3 6 8 2 4 1 7 5
13      3 7 2 8 5 1 4 6
14      3 7 2 8 6 4 1 5
15      3 8 4 7 1 6 2 5