/*
问题描述
八皇后问题是在棋盘上放皇后,互相不攻击,求方案。变换一下棋子,还可以有八车问题,八马问题,八兵问题,八王问题,注意别念反。在这道题里,棋子换成车,同时棋盘也得换,确切说,是进行一些改造。比如现在有一张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
*/

#include<stdio.h>
void shuru( int [][9] , int );
void shuchu( int [][9] , int );
void jisuan( int [][9] , int , int , int , int , int , int * );
int check( int [][9] , int , int );
int main(void)
{int n ;scanf("%d", &n);int sz[9][9];shuru( sz  , n );shuchu( sz , n );return 0;
}
int check( int sz[][9] , int dqh , int dql )
{int i , j ;for( i = dqh - 1 ; i >= 0 ; i -- ){if( sz[i][dql] == 0 || sz[i][dql] == 2 ){break;}} for( j = dql - 1 ; j >= 0 ; j -- ){if( sz[dqh][j] == 0 || sz[dqh][j] == 2 ){break;}}if( sz[i][dql] == 2 || sz[dqh][j] == 2 ){return 0;}return 1;
}void jisuan( int sz[][9] , int n , int dqh , int dql , int s , int gs , int * sum )
{if( s == gs ){++ * sum ;return ;}if( dqh == n ){return ;}int i ;for( i = dql ; i < n ; i ++ ){if( sz[dqh][i] != 0 ) {if(check( sz , dqh , i ) == 1 ){sz[dqh][i] =  2;jisuan( sz , n , dqh , i + 1 , s + 1 , gs , sum ); sz[dqh][i] =  1;   }}}jisuan( sz , n , dqh + 1 , 0 , s , gs , sum );
}
void shuchu( int sz[][9] , int n)
{int i = 1;while(  i <= n * n ){int sum = 0  ;jisuan( sz , n , 0 , 0 , 0 , i , &sum );if( sum == 0 )      {break ;}printf("%d\n", sum );i ++ ; }
}
void shuru( int sz[][9] , int n )
{int i , j;for( i = 0 ; i < n ; i ++ ){for( j = 0 ; j < n ; j ++ ){scanf("%d", & sz[i][j] ) ;}}
} 

算法提高 棋盘多项式相关推荐

  1. 计算机基础算法棋盘覆盖,分治算法求解棋盘覆盖问题互动教学过程.doc

    分治算法求解棋盘覆盖问题互动教学过程 分治算法求解棋盘覆盖问题互动教学过程 摘要:针对算法设计与分析课程难度较大.对学生编程能力要求较高的现状,通过对棋盘覆盖问题的分治算法求解过程进行互动教学设计,引 ...

  2. 算法提高 学霸的迷宫

    算法提高 学霸的迷宫 时间限制:1.0s 内存限制:256.0MB 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二 ...

  3. 算法提高 邮票面值设计

    算法提高 邮票面值设计 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个信封,最多只允许粘贴N张邮票,计算在给定K(N+K≤13)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮 ...

  4. 算法提高课-图论-有向图的强连通分量-AcWing 367. 学校网络:强连通分量、tarjan算法

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 第一问:通过tarjan算法求出强连通分量并且缩点后,统计入度为0的点的个数p即可. 第二问,至少加几条边才能使图变成强连通分量?这 ...

  5. 蓝桥杯练习系统习题-算法提高2

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高2 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  6. 蓝桥杯练习系统习题-算法提高1

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-算法提高1 题目搜索方式:Ctrl+F--> 输入题目名称-> ...

  7. 限制排列与棋盘多项式

    首先来说说限制排列 例子: 相邻禁位排列问题:在整数1,2,3,...,n的无重全排列中,要求,求全体排列数 分析:利用容斥不难得到 旋转木马问题:8个小孩围坐在旋转木马上,问有多少种变换座位的方法, ...

  8. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  9. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

最新文章

  1. Windows下如何安装MariaDB
  2. OS / CPU是如何访问内存的?
  3. 如何快速在oracle内生成数据,[Oracle]快速生成大量模拟数据的方法
  4. 下拉框联动_058-ajax之三级联动案例分析
  5. GCDWebUploader支持iOS进入后台后仍然可以进行传输
  6. 潘正磊谈微软研发团队管理和敏捷实践学习总结
  7. python面试题~反射,元类,单例
  8. linux 共享移动硬盘,随时登陆上QQ 自带Linux移动硬盘实战
  9. 请描述定时器初值的计算方式_单片机C语言编程中定时器初值计算的两种方法...
  10. 物联网学习之路——物联网通信技术:NBIoT
  11. insert_text
  12. iOS ChildViewController与View
  13. 最新 | 机械工程领域SCI期刊一览(2020JCR)
  14. vue 刮刮乐抽奖H5项目
  15. Win 10 + Ubuntu 18.04双系统 卸载Ubuntu
  16. ifconfig 配置ip,netmask,gw
  17. 几个黑科技、实用网站(转自公众号:趣说软件)
  18. 嗯,好不容易得到面试机会,面试官问的全回答了,但心痒一看状态进了人才库了.....
  19. win10系统谷歌浏览器怎么用不了?谷歌浏览器打不开网页的解决方法
  20. 剑指Offer 27—二叉树的镜像

热门文章

  1. 企立方电商:拼多多直通车应该注意什么
  2. Google Earth Engine(GEE)——DYNAMIC WORLD/V1全球sentinel-2数据集10米分辨率数据集影像加载和DEM山影的3D影像
  3. 有关视频小知识(码率,比特率,视频编码等)
  4. Zotero常见问题
  5. 传智健康项目day01
  6. html多个div纵向排列,多个div横向排列
  7. 刷机-把机顶盒当服务器使用
  8. QVideoWidget播放视频闪屏
  9. android 脸部识别之3D,Android Q新功能曝光了:原生支持3D人脸识别
  10. 使用WritableFont设置字体样式