zoukankan      html  css  js  c++  java
  • POJ1321

    题意

    中文题

    PS

    我感觉再简单的DFS我写总还是有错误,关键是自己还看不出来。

    AC代码

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    #include<cmath>
    #include<list>
    #include<stdlib.h>
    #include<map>
    #include<stack>
    #include<stdio.h>
    #include<queue>
    using namespace std;
    typedef long long ll;
    #define sc(T) scanf("%d",&T)
    #define scc(x,y) scanf("%d %d",&x,&y)
    #define pr(T) printf("%d
    ",T)
    #define f(a,b,c) for (int a=b;a<=c;a++)
    #define ff(a,b,c) for (int a=b;a>=c;a--)
    #define inf 0x3f3f3f3f
    #define mem(a,b) memset(a,b,sizeof(a))
    #define eps 1e-9
    #define PI acos(-1)
    
    int n,k,ans;
    char s[10][10];
    int to[4][2]= {{0,1},{0,-1},{1,0},{-1,0}};
    //bool book[10][10];
    bool book[10]; // 标记列就行
    
    void dfs(int x,int cnt)
    {
        if(cnt==k)
            ans++;
        //ans++;
        //book[x][y]=1;
    //    for(int i=0; i<4; i++)
    //    {
    //        int tx=x+to[i][0];
    //        int ty=y+to[i][1];
    //        if(tx>=0&&tx<n&&ty>0&&ty<n&&a[tx][ty]!='#'&&judge(x,y)&&!book[x][y])
    //        {
    //            book[tx][ty]=1;
    //            dfs(tx,ty);
    //            book[tx]p[ty]=0;
    //        }
    //    }
        for(int i=x; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                if(s[i][j]=='#'&&!book[j])
                {
                    //book[x][y]=1;
                    book[j]=1;
                    dfs(i+1,cnt+1); //不是 dfs(x++,cnt++)
                    //book[x][y]=0;
                    book[j]=0;
                }
            }
        }
    }
    
    int main()
    {
        while(~scanf("%d %d",&n,&k))
        {
            if(n==-1&&k==-1)
                break;
            ans=0;
            memset(book,0,sizeof(book));
            for(int i=0; i<n; i++)
                cin>>s[i];
    //        for(int i=0; i<n; i++)
    //        {
    //            for(int j=0; j<n; j++)
    //            {
    //                memset(book,0,sizeof(book));
    //                dfs(i,j);
    //            }
    //        }
            dfs(0,0); //0行开始 cnt=0
            cout<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    第二十三篇 函数的调用和函数参数的应用
    第二十四篇 可变长参数
    第二十二篇 定义函数的三种形式以及函数的返回值
    <面试题>面试题整理(1-100)
    算法通关面试40讲
    <Django>部署项目
    <Django>天天生鲜项目(三)
    <Django>天天生鲜项目(三)
    <Django>天天生鲜项目(二)
    <mysql>mysql日志文件
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13660432.html
Copyright © 2011-2022 走看看