zoukankan      html  css  js  c++  java
  • 搜索系列——1321 棋盘问题

    棋盘问题

    Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other)
    Total Submission(s) : 11   Accepted Submission(s) : 4
    Problem Description
    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。
     


    Input
    输入含有多组测试数据。
    每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n
    当为-1 -1时表示输入结束。
    随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
     


    Output
    对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。
     


    Sample Input
    2 1 #. .# 4 4 ...# ..#. .#.. #... -1 -1
     


    Sample Output
    2 1
     


    Source
    PKU


    最近研究搜索算法,这题是dfs的典型题,人笨,研究了好久,参考了网上的解题报告,终于给A掉了。。。

    AC代码如下:

    #include<stdio.h>
    
    int n, k, c[8], r[8], p[8][8], sum;
    long way;
    void search(int cur)
    {
    	int i, j;
    	if (sum == k)
    	{
    		way++;
    		return;
    	}
    	if (cur == n)
    		return;
    	for (j = 0; j < n; j++)
    	{
    		if (p[cur][j] && r[cur] && c[j])
    		{
    			r[cur] = 0;
    			c[j] = 0;
    			sum++;
    			search(cur + 1);
    			sum--;
    			r[cur] = 1;
    			c[j] = 1;
    		}
    	}
    	search(cur + 1);
    	return;
    }
    int main()
    {
    	scanf("%d%d", &n, &k);
    	for (; n != -1 || k != -1; scanf("%d%d", &n, &k))
    	{
    		getchar();
    		for (int i = 0; i < n; i++)
    		{
    			r[i] = 1;
    			c[i] = 1;
    			for (int j = 0; j < n; j++)
    				if (getchar() == '#')
    					p[i][j] = 1;
    				else
    					p[i][j] = 0;
    			getchar();
    		}
    		way = 0;
    		sum = 0;
    		search(0);
    		printf("%ld\n", way);
    	}
    	return 0;
    }


    学习总是先从模仿开始,因为我是个蒻菜。。。


  • 相关阅读:
    ajax请求传参数复杂对象list,后端springmvc接收参数
    SpringBoot热部署简介
    lucene 初探
    学生管理系统导包
    tomcat加入系统服务+开机自启
    sql like模糊查询的条件拼接
    SSHDemo
    Spring在web开发中的应用
    Spring的Bean内部方法调用无法使用AOP切面(CacheAble注解失效)
    dwz tree组件 取得所选择的值
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3013917.html
Copyright © 2011-2022 走看看