admin 管理员组文章数量: 1087677
C语言蓝桥杯刷题:受伤的皇后
题目链接
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int arr[10];//arr[i]=j表示第i个皇后放在了j列,这样的一维数组相对二维更加节省空间
int n = 0;
int sum = 0;
int check(int r, int c)//判断r行c列是否可放置皇后,可以返回1,否则返回0
{for (int i = 0;i < r;i++)//判断前r行的是否与该位置冲突{if (arr[i] == c)//同列{return 0;}//两对角线if ((abs(i - r) == abs(arr[i] - c)) && abs(r - i) <3){return 0;}}return 1;
}
void dfs(int r)//从r行开始判断
{if (r == n){sum++;return;}for (int c = 0;c < n;c++)//寻找r行可以放的列{if (check(r, c)){arr[r] = c;dfs(r + 1);arr[r] = 0;}}
}
int main(int argc, char *argv[])
{scanf("%d", &n);dfs(0);printf("%d", sum);return 0;
}
本文标签: C语言蓝桥杯刷题受伤的皇后
版权声明:本文标题:C语言蓝桥杯刷题:受伤的皇后 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1694378076a251374.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论