当前位置: 首页 > ds >正文

[USACO1.5] 八皇后 Checker Challenge Java

import java.util.*;public class Main {// 标记 对角线1,对角线2,所在x轴 是否存在棋子static boolean[] d1 = new boolean[100], d2 = new boolean[100], d = new boolean[100]; static int n, ans = 0;static int[] arr = new int[14]; // 记录一轮棋子位置(x, y)public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();sc.close();dfs(1);System.out.println(ans);}static void dfs(int x) {if (x > n) { // 找到一组解ans++;if (ans <= 3) { // 输出前3个解for (int i = 1; i <= n; i++) System.out.print(arr[i] + " ");System.out.println();}return;}for (int y = 1; y <= n; y++) {// 判断两条对角线以及所在x轴是否已经存在棋子if (d[y] || d1[x + y] || d2[x - y + n]) continue; setChecked(x, y, true); // 放置棋子dfs(x + 1); // 下一列继续搜索setChecked(x, y, false); // 重置状态}}static void setChecked(int x, int y, boolean flag) {arr[x] = y; // (x, y)第x行y列放置一颗棋子d[y] = flag;d1[x + y] = flag;d2[x - y + n] = flag;}
}

每日一水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

http://www.xdnf.cn/news/10430.html

相关文章:

  • 智慧物流园区整体解决方案
  • LeeCode 98. 验证二叉搜索树
  • C#数字金额转中文大写金额:代码解析
  • CppCon 2014 学习:Pragmatic Type Erasure
  • vue-09(使用自定义事件和作用域插槽构建可重用组件)
  • Hbase
  • 如何真正实现软件开发“快”起来:破除误区与落地实践
  • 通义灵码深度实战测评:从零构建智能家居控制中枢,体验AI编程新范式
  • 新版智慧景区信息化系统解决方案
  • JOIN 与子查询的性能对比分析
  • 【shell】通过Shell命令占用内存
  • 【代码坏味道】膨胀类 Bloaters
  • 力扣热题100之翻转二叉树
  • C++哈希表:unordered系列容器详解
  • day15 leetcode-hot100-28(链表7)
  • C++ —— B/类与对象(下)
  • 流媒体基础解析:从压缩到传输的基本了解
  • Linux研学-用户解析
  • Java Spring 之过滤器(Filter)详解与实战
  • Correlations氛围测试:文本或图像的相似度热图
  • 2024年ESWA SCI1区TOP,自适应学习灰狼算法ALGWO+无线传感器网络覆盖优化,深度解析+性能实测
  • DeepSeek 赋能数字孪生城市,筑牢应急管理智慧防线
  • day42 简单CNN
  • C++ list数据删除、list数据访问、list反转链表、list数据排序
  • HCIE-STP复习
  • C# 密封类和密封方法
  • simulink mask、sfunction和tlc的联动、接口
  • CSS专题之层叠上下文
  • 小明的Java面试奇遇之:支付平台高并发交易系统设计与优化[特殊字符]
  • [SC]SystemC在CPU/GPU验证中的应用(三)