POJ1321棋盘问题 java

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static char xy[][];
    public static  boolean h[];

    public static  int step;
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            step=0;
            int a,b;
            a=sc.nextInt();b=sc.nextInt();
            if (a==-1 && b==-1){
                break;
            }
            xy=new char[a][a];
            h=new boolean[a];

            for (int i = 0; i <a ; i++) {
                char z[]=sc.next().toCharArray();
                for (int j = 0; j <a ; j++) {
                    xy[i][j]=z[j];
                }

            }

            dfs(0,b);
            System.out.println(step);
        }
    }
    public static void  dfs(int x,int to ){
        if (to==0){
            step++;
            return;
        }
        int sb=to;
        for (int i = x; i <xy.length ; i++) {
            for (int j = 0; j < xy.length; j++) {
                if (h[j]==false && xy[i][j]=='#'){
                    h[j]=true;
               
                    dfs(i+1,to-1);
                    h[j]=false;
         
                 
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值