算法提高 棋盘多项式  

时间限制:1.0s   内存限制:256.0MB

  棋盘多项式

问题描述

  八皇后问题是在棋盘上放皇后,互相不攻击,求方案。变换一下棋子,还可以有八车问题,八马问题,八兵问题,八王问题,注意别念反。在这道题里,棋子换成车,同时棋盘也得换,确切说,是进行一些改造。比如现在有一张n*n的棋盘,我们在一些格子上抠几个洞,这些洞自然不能放棋子了,会漏下去的。另外,一个车本来能攻击和它的同行同列。现在,你想想,在攻击的过程中如果踩到一个洞,便会自取灭亡。故,车的攻击范围止于洞。

  此题,给你棋盘的规模n,以及挖洞情况,求放k个车的方案数(k从0到最多可放车数)

输入格式

  第一行一个整数n表示棋盘大小

  接下来n行,每行n个用空格隔开的数字0或1,0的形状表示洞,1表示没有洞

输出格式

  若干行,第i行表示放i个车的方案数

样例输入

3

1 0 1

1 1 1

1 0 1

样例输出

7

12

4

数据规模和约定

  n<=8

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class 棋盘多项式 {
static int[][] map;
static int n,k;
static int[] s; static boolean pd(int x,int y){
int i=x,j=y;
while (i>=0) {
if(map[i][j]==0)break;
if(map[i][j]==2)return false;
i--;
}
i=x;
while (j>=0) {
if(map[i][j]==0)break;
if(map[i][j]==2)return false;
j--;
}
// j=y;
// while(i>=0&&j>=0){
// if(map[i][j]==0)break;
// if(map[i][j]==2)return false;
// i--;j--;
// }
// i=x;j=y;
// while(i>=0&&j<n){
// if(map[i][j]==0)break;
// if(map[i][j]==2)return false;
// i--;j++;
// }
return true;
}
static int getNext(int x,int y){
if(x<n)
for (int i = y+1; i <n; i++) {
if(map[x][i]==0)return i+1;
}
return n;
}
static void tryC(int x,int y,int a){
//System.out.println(a);
s[a]++;
if(a>k)k=a;
//if(a==n)return;
int i1,j1;
for (int i = x; i < n; i++) {
int j=0;
if(i==x)j=y;
for (; j < n; j++) {
if(i==n||j==n)continue;
if(map[i][j]==0)continue;
if(pd(i, j)){
i1=i;j1=j;
map[i1][j1]=2;
j1=getNext(i, j);
if(j1==n){j1=0;i1++;}
tryC(i1, j1, a+1);
map[i][j]=1;
}
}
}
}
static void print(){
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map.length; j++) {
System.out.print(map[i][j]+" ");
}System.out.println();
}
}
public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(bf.readLine());
map=new int[n][n];
s=new int[100000];
for (int i = 0; i < n; i++) {
String[] a1=bf.readLine().split(" ");
for (int j = 0; j < n; j++) {
map[i][j]=Integer.parseInt(a1[j]);
}
}
//print();
tryC(0, 0, 0);
for (int i = 1; i <=k; i++) {
System.out.println(s[i]);
} } }

Java实现 蓝桥杯VIP 算法提高 棋盘多项式的更多相关文章

  1. Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪

    试题 算法提高 研究兔子的土豪 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 某天,HWD老师开始研究兔子,因为他是个土豪 ,所以他居然一下子买了一个可以容纳10^18代兔子的巨大 ...

  2. Java实现 蓝桥杯VIP 算法提高 3-2求存款

    算法提高 3-2求存款 时间限制:1.0s 内存限制:256.0MB 问题描述 见计算机程序设计基础(乔林)P50第5题. 接受两个数,一个是用户一年期定期存款金额,一个是按照百分比格式表示的利率,计 ...

  3. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  4. Java实现 蓝桥杯VIP 算法提高 5-3日历

    算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...

  5. Java实现 蓝桥杯VIP 算法提高 11-2删除重复元素

    算法提高 11-2删除重复元素 时间限制:10.0s 内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内 ...

  6. Java实现 蓝桥杯VIP 算法提高 P0401

    算法提高 P0401 时间限制:1.0s 内存限制:256.0MB 输入一个无符号整数x,输出x的二进制表示中1的个数. 输入: 76584 输出: 7 import java.util.Scanne ...

  7. Java实现 蓝桥杯VIP 算法提高 理财计划

    算法提高 理财计划 时间限制:1.0s 内存限制:256.0MB 问题描述 银行近期推出了一款新的理财计划"重复计息储蓄".储户只需在每个月月初存入固定金额的现金,银行就会在每个月 ...

  8. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  9. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

随机推荐

  1. aui移动端UI库

    aui 简介 aui 是一套基于原生javascript开发的移动端UI库,包含常用js方法.字符校验.dialog提示弹窗.侧滑菜单.时间选择器.多级联动.聊天UI.项目常用模板...... 特点 ...

  2. 使用react的一点提醒17/10/26

    1.不直接操作dom 今天在和同学讨论的时候,发现了一些以前没注意的问题. 这段时间自己学习时一直都是用原生js写代码,但是以前在公司经常使用jq,也不知不觉间让我习惯了操作dom的倾向. 使用vue ...

  3. React 中使用sass

    npm install node-sass-chokidar --save-dev package.json添加两行: "scripts": { 2 "build-css ...

  4. 爬虫之requests的请求与响应

    requests是基于urllib3的一个用于发起http请求的库(中文文档)数据采集流程: 指定url>> 基于 requests模块发起请求>> 获取响应中的数据>& ...

  5. Django之form表单常用字段与插件

    from django.shortcuts import render,HttpResponse from django import forms from app01 import models f ...

  6. C# DataTable转为TXT文档

    public static void SaveCSV(DataTable dt, string fullPath) { var fi = new FileInfo(fullPath); if (!fi ...

  7. jsp获取当前日期

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>  <jsp: ...

  8. SSH_ProductCRUD的项目结构与配置文件

    项目结构 各类配置文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hib ...

  9. Poj 2109 k^n = p.

    Poj2109(1)和Poj2109(2)这两种解答都是有漏洞的,就是解不一定存在. 当然这种漏洞的存在取决于出题人是否假设输入的n,p必须默认有kn = p这样的关系存在. 这道题可以详细看http ...

  10. 【python爬虫】scrapy入门6-生成多个spider

    一个工程生产一个spider,也可以多个spider,比如一个爬文本,一个爬图片等 cd tutorial #自己创建的工程目录 scrapy genspider test1 test1.com sc ...