首页 > 其他分享 >方格棋盘

方格棋盘

时间:2023-03-25 11:24:55浏览次数:32  
标签:棋盘 int 方格 include &- dp 位数

题目描述

在n*n(n≤20)的方格棋盘上放置n个车,每个车可以攻击到所在行和列任意一个格,求使它们不能互相攻击的方案总数。

输入格式

一个数 n

输出格式

方案总数

#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdio>

using namespace std;

int n,m;
__int128 dp[1 << 21];

void print(__int128 x){
	if(x < 0 ) putchar('-'), x*=-1;
	if(x > 9 ) print( x / 10 );
	putchar( x % 10 + '0' );
	return;
}

int main()
{
	scanf("%d",&n);
	
	dp[0] = 1;
	for (int i = 1; i < ( 1 << n ); ++ i) {
		for (int j = i; j > 0; j -= ( j & - j )) {
			//j&-j表示找最后的一的位数
			//而j-=j&-j表示依次次向前找 i的每个1 的位数 
			dp[i] += dp[i & ~ ( j & - j )];
			//i&~(j&-j)表示在i中 把j所表示的1的位数 上的1 变成0
		} 
	}
	print(dp[( 1 << n ) - 1]);
    //表示n位的二进制数每一位都为1的情况,即每一列都放上了车
	return 0;
}

标签:棋盘,int,方格,include,&-,dp,位数
From: https://www.cnblogs.com/jueqingfeng/p/17254376.html

相关文章

  • 0001-算法笔记分治法实现棋盘覆盖问题
    今天上课老师讲了分治法,下课后自己把程序碼了一遍,还是存在一个疑问--为什么每个方格都会填充到,在下面将会解决并叙述。    首先贴上程序:#include<stdio.h>#incl......
  • 大爽Python入门教程 7-6 面向对象编程 实例演示 简易方格游戏(二维)
    大爽Python入门公开课教案点击查看教程总目录1介绍将上一节,一维的面板拓展成二维的。面板数据从txt中读取出来玩家从左上进入,输入一串移动命令,展示中间过程玩家......
  • 【小哥132】走线演示-群组走线-显示与隐藏飞线-方格方式隐藏电源/地网络飞线-赋予走线
    走线:窗口选择命令左键单击,完成一部分走线  群组走线:对象是过孔,焊盘,走线执行走线命令,勾选好对象,框选好对象,右键Routespacing。变跟数据线-右键changecontroltr......
  • HJ走方格的方案数_动态规划 python
      1importsys2m,n=list(map(int,sys.stdin.readline().strip().split()))3#记录横向小格边为1,竖向为-1。n=1*n,m=-1*m4#记录从出发点到每个节点的走法,取......
  • P5752 [NOI1999] 棋盘分割题解
    本文来自我的洛谷博客。本题解力求使用清晰易懂的图片和文字,讲解最简洁的道理。请大家耐心地看完,注意要结合图片一起哦~~2022-8-24更改了格式与错别字2022-8-28更改......
  • 棋盘移动
    在一个n*n的棋盘中(n<20),从(0,0)点出发,只能向上或者向右走,求走到(m,n)点有多少种走法?样例输入22样例输出6递归(Oh`no)#include<bits/stdc++.h>usingnamespacestd;i......
  • P8707 [蓝桥杯 2020 省 AB1] 走方格
    题目传送门题目大意现在有个人站在第\(1\)行第\(1\)列,要走到第\(n\)行第\(m\)列(只能向右或者向下走),如果行号和列数都是偶数,不能走入这一格中。问有多少种方案。......
  • P3977 [TJOI2015]棋盘 题解
    前制知识引导状态压缩动态规划:[P1896[SCOI2005]互不侵犯](https://www.luogu.com.cn/problem/P1896)矩阵加速优化:[P1962斐波那契数列](https://www.luogu.com.cn/prob......
  • AcWing 372. 棋盘覆盖
    给n*n的方格图铺满1*2的长条,且某些位置不能铺,问最多能放多少个长条 #include<iostream>#include<queue>#include<vector>#include<cstring>usingnamespaces......
  • 棋盘问题
     在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放......