• poj1321 基础DFS


    最近两天在写搜索专题

    题意:中文题就不用讲题意

    思路:由于每行每列只允许最多一个棋子,那么我们可以从第一行开始往下搜索,并标记列,如果这列放了就不放,否则就放,并向下层搜索,这样可以不用标记行了。

    #include<stdio.h>
    #include<string.h>
    int n,sum,m;
    const int maxn = 10;
    char map[maxn][maxn];
    int visc[maxn];
    
    void DFS(int r,int k)
    {
    	if(k == m)
    	{
    		sum ++;
    		return ;
    	}
    	if(r >= n)return ;
    	for(int i =0;i<n;i++)
    	{
    		if(!visc[i] && map[r][i] == '#')
    		{
    			visc[i] = 1;
    			DFS(r+1,k+1);
    			visc[i] = 0;
    		}
    	}
    	DFS(r+1,k);
    }
    int main()
    {
    	while(scanf("%d%d",&n,&m),n+1+m+1)
    	{
    		sum = 0;
    		memset(visc,0,sizeof(visc));
    		for(int i=0;i<n;i++)
    		{
    			scanf("%s",map[i]);
    		}
    		DFS(0,0);
    		printf("%d
    ",sum);
    	}
    	return 0;
    }
    
  • 相关阅读:
    while 循环 。。
    数据运算,运算符
    字符串常用操作
    列表常用操作
    三级菜单
    杂七杂八
    简单的登陆程序001
    猜年龄游戏
    实现密文输入密码
    使用urllib2打开网页的三种方法
  • 原文地址:https://www.cnblogs.com/BruceNoOne/p/3864046.html
Copyright © 2020-2023  润新知