Day2-L-棋盘问题-POJ1321】的更多相关文章

棋盘问题——深度优先搜索 题目描述: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. 详情请看poj1321:  https://vjudge.net/problem/POJ-1321#author=0 解题思路: 按行进行深搜,总的方案数 = 选取该行中某位置的方案数 + 不选取该行位置的方案数,直至棋子数位0或达到最后一行 代码如下: #i…
题目链接:http://codeforces.com/gym/100923/problem/L 分析:题目要求序列首尾相同,在此基础上的字典序第k个:因为只存在a,b所以我们把它等效成0和1的话,字典序k也就是二进制下的k,将其最后一位与序列头部相同即可 1 #include<iostream> 2 #include<sstream> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<string>…
http://poj.org/problem?id=1321 由于搜索是原来写的,而集训的时候没来所以只能现在补补咯-_- 简单的深搜 #include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> #define N 10 #define INF 0xfffffff #include<math.h> #include<iostream> usin…
特殊的质数肋骨(递归)] -题目描述-农民约翰的母牛总是生产出最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数. 7331 被叫做长度 4 的特殊质数. 写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊…
五子棋游戏 一,1.五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局. 五子棋的开始阶段称为开局,或称布局.其开局阶段是十分短暂的,大约在七着与十几着之间.在这一阶段的争夺中,双方的布局,应对将对以后的胜负起着极为关键的作用.在开局阶段取得的形势好坏,主动与被动,先手与后手的优劣程度,往往直接影响中局的战斗.因此积极处理好开局和开局向中局的过渡十分重要. 五子棋是从一至五,逐渐布子,发展连系,同时运用限制和反限制的智慧,在连子的过程中为自己的棋子争得相对的…
A.棋盘问题——poj1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行有n个字符,其中…
最近看了最强大脑,对节目中的黑白迭代很感兴趣,就自己写了一个500多行的程序.燃鹅,只实现了一部分功能,还非常简陋.无奈之下,我只好从网上下载了一份代码,然后自己稍加修改就成了一份半改编的代码. 虽然代码不完全是我写的,但思路还是要有. 1.欢迎界面 2.规则界面 3.菜单 4.游戏界面 5.结束界面 这些大概需要几个功能. 1.随机取数 2.隐藏光标(游戏效果考虑) 3.移动光标 4.检查答案 结合以上这些,下面就是源代码 #include <cstdio> #include <ios…
一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException ServletRequest req:代表着请求对象,该对象中有HTTP协议的请求部分的所有内容.它的实现类…
需要thress.js插件:     http://github.com/mrdoob/three.js // three.js - http://github.com/mrdoob/three.js 'use strict';var THREE=THREE||{REVISION:"56"};self.console=self.console||{info:function(){},log:function(){},debug:function(){},warn:function(){…
题目链接 http://poj.org/problem?id=1321 题意 给定一块棋盘(棋盘可能是不规则的),有k个相同棋子,将k个棋子摆放在棋盘上,使得任意两个棋子不同行,不同列,求有多少种不同的摆法. 思路 此题和八皇后问题很像,需要注意摆放完毕后要恢复现场,便于下一次摆放. 代码 #include <iostream> #include <cstdio> #include <cstring> using namespace std; ; char board[…
http://poj.org/problem?id=1321 题意 : 我能说这是迄今为止见到的POJ上第二道中文题吗,既然是中文也很好理解,就不详述了 思路 : 典型的深搜DFS ; #include<cstdio> #include<cstring> #include<iostream> using namespace std ; ; int vis[maxn] ; int ch[maxn][maxn] ; ,n,k ; int judge(int a,int b)…
题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input: 输入含有多组测试数据.每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n当为-1 -1时表示输入结束.随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示…
做完题之后看了网上的一些题解但是发现他们的解释大部分都是错误的,所以就自己写了一下,笔者能力也有限,有错误之处大家多多指正. 第一次看题的时候以为就是简单的八皇后,但是写了之后发现存在很多问题,比如需要记录放入的棋子数,在一次访问之后没有回复原来棋盘的形状等一些问题. 本题思路: 回溯思想,对于每一行,从这一行的第一个开始放棋子,如果发现棋子可以放就放下一个棋子并且将已经放了棋子的数目更新,如果某一次放的棋子数目已经达到题目要求个数,则回溯到这一行的其它列并回复原来的状态继续放棋子,直到所有情况…
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1321">http://poj.org/problem?id=1321 -----------------------------------------------------------------------------------------------------------------------------------------------…
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 51262 Accepted: 24785 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一…
一.题目回顾 题目链接:棋盘问题 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形…
题目链接:http://poj.org/problem?id=1321 棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50263   Accepted: 24352 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多…
本题传动门 本题知识点:深度优先搜索 + 枚举 + 回溯 题意是要求我们把棋子放在棋盘的'#'上,但不能把两枚棋子放在同一列或者同一行上,问摆好这k枚棋子有多少种情况. 我们可以一行一行地找,当在某一行上找到一个可放入的'#'后,就开始找下一行的'#',如果下一行没有,就再从下一行找.这样记录哪个'#'已放棋子就更简单了,只需要记录一列上就可以了. 数据很小. #include<iostream> #include<cstdio> #include<cstring> u…
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白…
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白…
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示…
首先声明 : 这是个很easy的题 可这和我会做有什么关系 题目大意: 在n*n的方格棋盘上放置n个车,某些格子不能放,求使它们不能互相攻击的方案总数. 注意:同一行或同一列只能有一个车,否则会相互攻击. 输入: 输入文件第一行,有两个数n, m ,n表示方格棋盘大小,m表示不能放的格子数量 下面有m行,每行两个整数,为不能放的格子的位置. 算法分析: 1. 显然这是个状压dp(好吧没有那么显然,但是是状压dp就完了) 状态很多而且给出的数据范围很小(这个题给出的20>=n) 2. 我们定义一个…
简单搜索step1 POJ-1321 这是第一次博客,题目也很简单,主要是注意格式书写以及常见的快速输入输出和文件输入输出的格式. 递归的时候注意起始是从(-1,-1)开始,然后每次从下一行开始递归.这样vis数组只需要开一维就可以了. 其实这里的递归的c可以不用,因为每次递归都要遍历每一列. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using nam…
http://poj.org/problem?id=1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. 输入含有多组测试数据. 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目. n <= 8 , k <= n 当为-1 -1时表示输入结束. 随后的n行描述了棋盘的形状:每行…
题目链接. 分析: 用 dfs 一行一行的搜索,col记录当前列是否已经放置. AC代码如下: #include <iostream> #include <cstdio> #include <cstdlib> #include <string> #include <algorithm> #include <vector> #include <map> #include <cstring> #include &l…
#include<iostream> #include<cstring> using namespace std; ]={},sum=; ][]; void dfs(int a,int b) { if(b>=n) { if(a==k) sum++; return; } ;i<n;i++) { if(!bb[i]&&aa[b][i]=='#') { bb[i]=; dfs(a+,b+); bb[i]=; } } dfs(a,b+); } int main(…
题目链接: http://poj.org/problem?id=1321 题目大意: 你有k个棋子,若干个可以填的位置,要求填下一个棋子后其行和列不能填棋子. 思路: dfs策略 画图理解更好些: 填下一个棋子.行列需要跳一下,dfs的时候for循环代表行,用一个vis数组来表示该列能否用,如果符合条件的需要i+1跳到下一行. 所以for循环第一个可以这样写: for(int i = x; i < n; ++i) 下面由于用了vis数组,所以从0开始遍历就好. 下面是AC代码: #include…
传送门 ## T1 区间修改+单点查询.差分树状数组. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; inline int rd(){ ,f=;char ch=getchar(); :;ch=getchar();} )+(x<<)+ch-';ch=getchar();} return f?x:-x; } void out(int x){ if(!x)…
NOI2014 Day2 动物园 题目描述:给出一个字符串(长度为\(Len\)),设\(num[i]\)为字符串的前\(i\)个字符构成的子串(\(A\))中,满足\(A\)的前\(L\)个字符既是\(A\)的后缀,且该后缀与前\(L\)个字符不重叠,\(L\)的最大值,求\(\prod_{i=1}^{Len}(num[i]+1)\) solution: 扩展KMP,减去重复部分就是了-- 时间复杂度:\(O(n)\) 随机数生成器 题目描述:给出数列\(x_0, x_i=(ax_{i-1}^…
模拟题 day2出题人: liu_runda题目名称 一盘大棋 下一代互联网 强连通分量源程序文件名 chess.cpp net.cpp scc.cpp输入文件名 chess.in net.in scc.in输出文件名 chess.out net.out scc.out每个测试点时限 1s 1s 1s内存限制 512MB 512MB 512MB测试点数目 10 10 10每个测试点分值 10 10 10是否打开O2 优化 是 是 是在windows 下用lemon 进行测试.一盘大棋(chess…