• A


    地图看起来不太大,可以试试深搜,试一下..
    还是比较简单的搜索,竟然一下就过...................
    #include<stdio.h>
    #include<string.h>

    #define maxn 20

    int m;                                          //地图长和宽
    int C;                                          //摆放的方案总数
    int p[maxn];                                    //标记数组,这列是否已经摆放
    char G[maxn][maxn];                             //保存地图


    void DFS(int r, int k)                          //第r行和剩余需要摆放的数目k
    {
        int i;

        if(k == 0)
        {
            C++;
            return ;
        }
        if(r >= m)return ;

        for(i=0; i<m; i++)
        {
            if(G[r][i] == '#' && p[i] == 0)
            {
                p[i] = 1;
                DFS(r+1, k-1);
                p[i] = 0;
            }
        }

        DFS(r+1, k);//这行不摆放,直接进入下行
    }

    int main()
    {
        int k;                                      //需要摆放棋子的数目

        while(scanf("%d%d", &m, &k), m != -1)
        {
            int i;

            for(i=0; i<m; i++)
                scanf("%s", G[i]);

            memset(p, 0sizeof(p));
            C = 0;

            DFS(0, k);

            printf("%d ", C);
        }

        return 0;

    } 

  • 相关阅读:
    迁移学习综述
    分析 Kaggle TOP0.1% 如何处理文本数据
    软件工程提问回顾与个人总结
    洛谷 4219/BZOJ 4530 大融合
    洛谷 1486/BZOJ 1503 郁闷的出纳员
    【模板】文艺平衡树
    【模板】树套树(线段树套Splay)
    【模板】可持久化线段树
    【模板】可持久化平衡树
    【模板】左偏树
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4647660.html
Copyright © 2020-2023  润新知