C语言 | Leetcode C语言题解之第52题N皇后II

ops/2024/10/18 13:45:47/

题目:

题解

struct hashTable {int key;UT_hash_handle hh;
};struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp = NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp;
}void insert(struct hashTable** hashtable, int ikey) {struct hashTable* tmp = NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);if (tmp == NULL) {tmp = malloc(sizeof(struct hashTable));tmp->key = ikey;HASH_ADD_INT(*hashtable, key, tmp);}
}void erase(struct hashTable** hashtable, int ikey) {struct hashTable* tmp = NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);if (tmp != NULL) {HASH_DEL(*hashtable, tmp);free(tmp);}
}struct hashTable *columns, *diagonals1, *diagonals2;int backtrack(int n, int row) {if (row == n) {return 1;} else {int count = 0;for (int i = 0; i < n; i++) {if (find(&columns, i) != NULL) {continue;}int diagonal1 = row - i;if (find(&diagonals1, diagonal1) != NULL) {continue;}int diagonal2 = row + i;if (find(&diagonals2, diagonal2) != NULL) {continue;}insert(&columns, i);insert(&diagonals1, diagonal1);insert(&diagonals2, diagonal2);count += backtrack(n, row + 1);erase(&columns, i);erase(&diagonals1, diagonal1);erase(&diagonals2, diagonal2);}return count;}
}int totalNQueens(int n) {columns = diagonals1 = diagonals2 = NULL;return backtrack(n, 0);
}

http://www.ppmy.cn/ops/24544.html

相关文章

数据结构-链表

目录 单向链表 双向链表 循环链表 链表采用不连续的存储单元,由若干个节点组成,每个节点由一个元素和一个指向另一个节点的引用组成, 具有查询慢、插入快的特点。效率上:读取O(n)、更新O(1)、插入O(1)、删除O(1) 。 链表的数据存储在节点(Node)中,是一种递归的数据结构 …

如何利用有限的数据发表更多的SCI论文?——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响

原文链接&#xff1a;如何利用有限的数据发表更多的SCI论文&#xff1f;——利用ArcGIS探究环境和生态因子对水体、土壤和大气污染物的影响https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247602528&idx6&snc89e862270fe54239aa4f796af07fb71&chksmfa82…

Taro +vue3 中实现全局颜色css变量的设置和使用

当我们现在需要弄一个随时修改的页面颜色主题色 我们可以随时修改 我使用的是 Taro 框架 一般有一个app.less 文件 我们在这个里面 设置一个root 全局样式 :root {--primary-color: #028fd4;--secondary-color: #028fd6;/* 添加其他颜色变量 */ } 这样在全局我们就可以使用这…

vue跟jQuery中的事件冒泡、事件捕获、事件委托(事件代理)

1、事件捕获、事件冒泡 在JS中&#xff0c;我们管事件发生的顺序叫“事件流” 标准的事件流&#xff1a;当dom触发了事件后&#xff0c;会先通过事件传播捕获到目标元素&#xff0c;然后目标节点通过事件传播实现事件冒泡 事件传播&#xff1a;无论是捕获还是冒泡&#xff0…

邦注科技即热式节能模温机 模温机的工作原理

模温机是一种用于控制模具温度的设备&#xff0c;主要用于塑料注塑、压铸、橡胶成型等工艺中。 其工作原理主要包括以下几个步骤&#xff1a; 加热阶段&#xff1a; 当模具需要加热时&#xff0c;双温模温机会启动加热系统&#xff0c;将热传导油或热传导水加热至设定温度。加…

uniapp-css多颜色渐变:左右+上下

案例展示 案例代码&#xff1a; 代码灵感&#xff1a;使用伪类进行处理 <view class"headBox"></view>.headBox {height: 200rpx;background: linear-gradient(to right, #D3D5F0, #F0DCF3, #F7F6FB, #DAE8F2, #E1D3EE);position: relative; }.headBox…

有趣的 CSS 图标整合技术!sprites精灵图,css贴图定位

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

maven-idea新建和导入项目

全局配置 新建项目 需要新建的文件夹 src/testsrc/test/javasrc/main/java 注&#xff1a;1、新建Java-class&#xff0c;输入.com.hello.hellomaven 2、快捷键psvm显示 public static void main(String[] args) {.... } package com.hello;public class hellomaven {publ…