zoukankan      html  css  js  c++  java
  • POJ 1321 棋盘问题

    //1321、我分分钟都可以A掉你你都不知道系咩事、

    A掉的那一刻,我盯着屏幕看了好久,这真是一道让我痛苦万分的题目,

    递归啊递归。。。是看了discuss里有个人贴的错误代码才获得灵感。。。

    思考了那么久,是那么的值得,差点放弃了。。。

    另外这道题要深刻总结,网上看了两种更简洁的方法,明天具体分析。

    真是一道关于深搜、递归的好题。

    View Code
     1 #include<iostream>
    2 #include<cstring>
    3 #include<cstdio>
    4 using namespace std;
    5
    6 char map[9][9];
    7 int size,num;
    8 int sum;
    9 bool vrow[9],vcolumn[9];
    10
    11 #define ONLINE
    12
    13 void online()
    14 {
    15 #ifdef ONLINE
    16 #else
    17 freopen("F:\\t1.txt","r",stdin);
    18 freopen("F:\\t2.txt","w",stdout);
    19 #endif
    20 }
    21
    22 void dfs(int row,int deepth)
    23 {
    24 if(deepth==num)
    25 {
    26 sum++;
    27 return;
    28 }
    29 if(row>size) //显然这个判断要放后面
    30 return ;
    31 for(int i=1;i<=size;i++)
    32 {
    33 if(map[row][i]=='#'&&vrow[row]&&vcolumn[i])
    34 {
    35 vrow[row]=false;
    36 vcolumn[i]=false;
    37 dfs(row+1,deepth+1);
    38 vrow[row]=true;
    39 vcolumn[i]=true;
    40 }
    41 }
    42 dfs(++row,deepth);
    43 }
    44
    45 void init()
    46 {
    47 cin>>size>>num;
    48 while(size!=-1||num!=-1)
    49 {
    50 sum=0;
    51 memset(map,'.',sizeof(map));
    52 memset(vrow,true,sizeof(vrow));
    53 memset(vcolumn,true,sizeof(vcolumn));
    54 for(int i=1;i<=size;i++)
    55 for(int j=1;j<=size;j++)
    56 cin>>map[i][j];
    57 dfs(1,0);
    58 cout<<sum<<endl;
    59 cin>>size>>num;
    60 }
    61 }
    62
    63
    64 int main()
    65 {
    66 online();
    67 init();
    68 return 0;
    69 }

    明天开讨论会,还要准备PPT,明天再总结。。。

    想了一个内环,其中42语句改成dfs(row+1,step)也可以。

    另外附加两个比较简洁的写法,是网上找的。。。

    这个有状态压缩。

    http://www.cnblogs.com/staginner/archive/2011/08/23/2151384.html

    这个要从他的写法里学会用while写深搜。。。

    其中对pos++这一句很经典,和我的42行一样,需要仔细思考。

    为什么我的不能写row++,为什么他的写dfs(pos+1,a)就会超时?

    http://www.cnblogs.com/rainydays/archive/2011/06/21/2086386.html

  • 相关阅读:
    Network (poj1144)
    C. Hongcow Builds A Nation
    ZYB loves Xor I(hud5269)
    D. Chloe and pleasant prizes
    Game(hdu5218)
    约瑟夫环的递推方法
    Misaki's Kiss again(hdu5175)
    Exploration(hdu5222)
    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    C. Arpa's loud Owf and Mehrdad's evil plan
  • 原文地址:https://www.cnblogs.com/YipWingTim/p/2225954.html
Copyright © 2011-2022 走看看