(step4.3.2)hdu 2553(N皇后问题)

来源:互联网 发布:mac上怎么做u盘启动盘 编辑:程序博客网 时间:2024/06/07 15:59
题目大意:n*n棋盘要放n个皇后,要求意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。最多几种方案


/* * 2553_1.cpp * *  Created on: 2013年8月16日 *      Author: Administrator */#include <iostream>using namespace std;int sum,m;int queen[11];int method[11];//用来判断是否同行或者是同斜线bool check(int n){int i;for( i = 0 ; i < n ; ++i){/** *为什么只需要判断是否同列或者同一斜线即可呢??不需要判断同行吗?? * 因为i指的就是行,而i是递增的,所以行就是递增的。所以行肯定不同 * * queen[n] = i;其中n是行的数目,也是皇后的数目,i是列的数目 * queen[i] == queen[n]  :是否同列 * abs(queen[i] - queen[n]) == (n - i) :判断是否在一条斜线上(只需要判断底和高是否相等即可) */if(queen[i] == queen[n] || abs(queen[i] - queen[n]) == (n - i)){return 1;}}return 0;}void put(int n){int i;for( i = 0 ; i < m ; ++i){queen[n] = i;if(!check(n)){if( n == m-1){++sum;}else{put(n+1);}}}}int main(){while(scanf("%d",&m)!=EOF,m){memset(queen,0,sizeof(queen));sum = 0;if(method[m] != 0){printf("%d\n",method[m]);}else{put(0);method[m] = sum;printf("%d\n",sum);}}}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 和人吃饭很尴尬怎么办 头不自觉向右偏怎么办 靠墙站立腰疼怎么办 小腿酸痛乏力肌肉萎缩怎么办 搬重物后手臂疼怎么办 和尚鹦鹉吃了盐怎么办 刚买鹦鹉不上手怎么办 word的文件时间改了怎么办 图强gps编码丢失怎么办 武统台湾后岛民怎么办 没有你我怎么办是什么歌 ios 12软件闪退怎么办 来大姨妈想吐怎么办 3岁宝宝体重轻怎么办 硕士延期毕业考上博士怎么办 中国人移民欧洲饮食不习惯怎么办 出车祸了报警警察不管怎么办 高中的孩子不好好上学怎么办 和老公消费观念不合拍怎么办 去医院没带现金怎么办 微信读书下架了怎么办 24岁血压有点高怎么办 吃鸡鼠标弹出来怎么办 电脑分辨率调错了怎么办 猎豹sc9打不开门怎么办 苹果手机卡顿反应慢怎么办 金立手机卡顿反应慢怎么办 20天宝宝黄疸219怎么办? 智慧树选修挂科怎么办 军人被纠察抓了怎么办 我家的小孩很凶怎么办 10岁儿童老挤眼怎么办? 脚趾长鸡眼好痛怎么办 月加班超过36小时怎么办 月经老提前怎么办才好 20岁例假不规律怎么办 农村的医保门诊封顶了怎么办 保研夏令营被拒怎么办 小学生去英国游学怎么办签证 医生说我湿气重怎么办 喉咙痛有来医生感冒喉咙痛怎么办