zoj1002 Fire Net

  1. //zoj1002 Fire Net

  2. //Accepted 1002 C++ 00:00.01 436K

  3. #include <stdio.h>

  4. int n;

  5. int max;

  6. char map[5][5];

  7. bool canput(int x, int y)

  8. {

  9.        int i,j;

  10.        if (map[x][y]!='.') return false;

  11.        for (i=x+1; i<n; i++){

  12.               if (map[i][y]=='X') break;

  13.               if (map[i][y]=='O') return false;

  14.        }

  15.        for (i=x-1; i>=0; i--){

  16.               if (map[i][y]=='X') break;

  17.               if (map[i][y]=='O') return false;

  18.        }

  19.        for (j=y+1; j<n; j++){

  20.               if (map[x][j]=='X') break;

  21.               if (map[x][j]=='O') return false;

  22.        }

  23.        for (j=y-1; j>=0; j--){

  24.               if (map[x][j]=='X') break;

  25.               if (map[x][j]=='O') return false;

  26.        }

  27.        return true;

  28. }

  29. bool finish()

  30. {

  31.        for (int i=0; i<n; ++i)

  32.               for (int j=0; j<n; ++j)

  33.                      if (canput(i,j))

  34.                             return false;

  35.        return true;

  36. }

  37. void backtrack(int num)

  38. {

  39.        if (finish()){

  40.               if (num>max) max = num;

  41.               return ;

  42.        }

  43.        for (int i=0; i<n; ++i)

  44.               for (int j=0; j<n; ++j)

  45.                      if (canput(i,j)){

  46.                             map[i][j] = 'O';

  47.                             backtrack(num+1);

  48.                             map[i][j] = '.';

  49.                      }

  50. }

  51. void solve()

  52. {

  53.        getchar();

  54.        for (int i=0; i<n; ++i){

  55.               for (int j=0; j<n; ++j)

  56.                      scanf ("%c",&map[i][j]);

  57.               getchar();

  58.        }

  59.        max = 0;

  60.        backtrack(0);

  61.        printf ("%d/n",max);

  62. }

  63. int main()

  64. {

  65. #ifdef ONLINE_JUDGE

  66. #else

  67.        freopen("1002.txt","r",stdin);

  68. #endif

  69.        while (scanf("%d",&n)!=EOF && n)

  70.               solve();

  71. #ifdef ONLINE_JUDGE

  72. #else

  73.        fclose(stdin);

  74. #endif

  75.        return 0;

  76. }
阅读更多
文章标签: c
个人分类: ZOJ
上一篇zoj1028 Flip and Shift
下一篇zoj1003 Crashing Balloon
想对作者说点什么? 我来说一句

Kindle_Fire_ADB_drivers

2016年09月17日 8.95MB 下载

Kindle FIRE HDX TOOLKIT

2014年08月30日 24.57MB 下载

AVL-FIRE软件

2015年04月28日 1.81MB 下载

A gift of fire

2015年09月19日 3.08MB 下载

fire-bug调试

2013年10月12日 2.07MB 下载

kindle fire hd 8.9刷机工具

2014年03月27日 17.74MB 下载

AE插件DE fire火焰插件

2013年08月27日 1.88MB 下载

AE DE fire插件

2011年07月27日 1.55MB 下载

max插件ray fire

2015年08月16日 43.43MB 下载

没有更多推荐了,返回首页

关闭
关闭