fork download
  1. #include <stdio.h>
  2.  
  3. int n,cnt;
  4. int map[16];
  5.  
  6. int abs(int a){
  7. if(a<0){
  8. a=0-a;
  9. }
  10. return a;
  11. }
  12.  
  13. int check(int a){ //check
  14. int i;
  15. int result=1;
  16.  
  17. for(i=0; i<n; i++){
  18.  
  19. if(a==i){
  20. break;
  21. }
  22. if(map[i]==map[a]||abs(i-a)==abs(map[i]-map[a])){
  23. result=0;
  24. break;
  25. }
  26. }
  27. return result;
  28. }
  29.  
  30.  
  31.  
  32. void dfs(int a){ //dfs..
  33. int i;
  34.  
  35. if(a==n){
  36. cnt++;
  37. return;
  38. }
  39.  
  40. for(i=0;i<n;i++){
  41. map[a]=i;
  42. if(check(a)==1){
  43. dfs(a+1);
  44. }
  45. }
  46. }
  47.  
  48. int main()
  49. {
  50. scanf("%d",&n);
  51. cnt=0;
  52. dfs(0);
  53. printf("%d\n",cnt);
  54. }
  55.  
Success #stdin #stdout 4.44s 9424KB
stdin
14
stdout
365596