zoukankan      html  css  js  c++  java
  • E

    在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放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

    类似八皇后,从第一个行开始搜,,但题目说只放k个,搜完要跳下一行,并且需要一个num记录已经放置的数目,搜索的时候超过m,就要返回同时sum++;

    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include <iomanip>
    #include<cmath>
    #include<float.h> 
    #include<string.h>
    #include<algorithm>
    #define sf scanf
    #define pf printf
    #define pb push_back
    #define mm(x,b) memset((x),(b),sizeof(x))
    #include<vector>
    #include<map>
    #define rep(i,a,n) for (int i=a;i<n;i++)
    #define per(i,a,n) for (int i=a;i>=n;i--)
    typedef long long ll;
    typedef long double ld;
    typedef double db;
    const ll mod=1e12+100;
    const db e=exp(1);
    using namespace std;
    const double pi=acos(-1.0);
    int sum;
    char a[10][10];
    int n,m;
    void dfs(int num,int deep)
    {
    	if(num>m) 
    	{
    		sum++;
    		return ;
    	}
    	rep(i,deep,n+1)
    	{
    		rep(j,1,n+1)
    		{
    			if(a[i][j]=='#')
    			{
    				int temp=0;
    				per(k,deep-1,0)
    				{
    					if(a[k][j]=='a')
    					temp=1;
    				}
    				if(temp==0)
    				{
    					a[i][j]='a';
    					dfs(num+1,i+1);
    					a[i][j]='#';
    				}
    			}
    		}
    	}
    }
    
    		
    int main()
    {
    	
    	while(1)
    	{
    		sf("%d%d",&n,&m);
    		if(n+m==-2) return 0;
    		mm(a,'.');
    		rep(i,1,n+1)
    		{
    			sf("%s",&a[i][1]);
    			//pf("1%s
    ",&d[i]);
    			a[i][n+1]='.';
    		}
    		sum=0;dfs(1,1);
    		pf("%d
    ",sum);
    	}
    }
    
  • 相关阅读:
    算法
    nginx配置https
    IE中JS跳转丢失referer的问题
    js 调用字符串类型的 js语句
    移动端iOS中input聚焦不灵敏
    上传图片转换格式为base64并预览
    转:手机号脱敏
    转:Lodash之throttle(节流)与debounce(防抖)总结
    转:tinyMCE中图片的自定义上传
    chrome input 输入框去掉黄色
  • 原文地址:https://www.cnblogs.com/wzl19981116/p/9389028.html
Copyright © 2011-2022 走看看