• 售前

  • 售后

热门帖子
入门百科

2022.01.13学习总结

[复制链接]
帆影哉 显示全部楼层 发表于 2022-1-15 23:25:01 |阅读模式 打印 上一主题 下一主题
本日上午把八皇后写出来了,实在这个题只要找到判断对角线的规律就根本ok了
   标题形貌

  一个如下的 6 \times 66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包罗两条主对角线的全部平行线)上至多有一个棋子。
  

  上面的布局可以用序列 2\ 4\ 6\ 1\ 3\ 52 4 6 1 3 5 来形貌,第 ii 个数字体现在第 ii 行的相应位置有一个棋子,如下:
  行号 1\ 2\ 3\ 4\ 5\ 61 2 3 4 5 6
  列号 2\ 4\ 6\ 1\ 3\ 52 4 6 1 3 5
  这只是棋子放置的一个解。请编一个步调找出全部棋子放置的解。
并把它们以上面的序列方法输出,解按字典次序分列。
请输出前 33 个解。末了一行是解的总个数。
  输入格式

  一行一个正整数 nn,体现棋盘是 n \times nn×n 巨细的。
  输特别式

  前三举动前三个解,每个解的两个数字之间用一个空格隔开。第四行只有一个数字,体现解的总数。
  输入输出样例

  输入 #1复制
  1. 6
复制代码
输出 #1复制
  1. 2 4 6 1 3 5
  2. 3 6 2 5 1 4
  3. 4 1 5 2 6 3
  4. 4
复制代码
分析/提示

  【数据范围】
对于 100\%100% 的数据,6 \le n \le 136≤n≤13。
  标题翻译来自NOCOW。
  USACO Training Section 1.5 
  做题思绪
以当前实行行数为函数参数 ,判断列数不能漏了条件,必须全部对角线和每行每列只有一个皇后,当step大于总行数时为递归竣事条件。
[code]#includeint N,total;//棋盘范围,摆法数int book[14],num[14];//book数组为标记当前所放位置是否每行每列只有一个,num数组则标记皇后的位置void dfs(int step)//step为当前实行的行数{    int m,flag=0,i;    for( i=1;i(y-x)){                min=y-x;            }        }return;    }    dfs(step+1,x*num[step][0],y+num[step][1]);//分两种情况,一种是加受骗前遍历的食材    dfs(step+1,x,y);//一种是不加受骗前遍历的食材}int main(){    scanf("%d",&n);    for(int i=1;i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作