【刷题笔记】第六天

文章目录

      • [Power Calculus](https://vjudge.net/problem/POJ-3134)
          • 题目描述
          • 分析
      • [706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/)
          • 方法一:纯数组
          • 方法二:数组加链表

今天再练一道迭代搜索的题 + 力扣每日一题

Power Calculus

题目描述

给你一个整数n,可以乘或者除,可以使用中间结果,求最少运算多少次可以得到 x n x^n xn

分析

相当于求从整数1开始,可以加或者减,可以使用中间结果,最少运算多少次可以得到n

实现细节见代码

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;const int N = 1010; 
int n;
int ans[N]; // 保存中间结果,n最大为1000,每次运算加1,也就需要1000次,所以最多运算1000次,也就是说中间结果最多有1000个
int pos; // 标记当前运算的位置
int depth; // 最大深度// dep:当前递归深度
bool dfs(int dep) {if (dep > depth) return false;if (ans[pos] << (depth - dep) < n) {// depth - dep是还剩的递归次数// 估价函数:用最快的倍增都不能到达n,退出// 最快的倍增:假设ans[pos] = m, 下一层递归2m,再下一层4m, 8m 。。。 ,以2的幂倍增return false;}if (ans[pos] == n) {return true;}pos++;for (int i = 0; i < pos; ++i) {// 讨论上一个中间结果与前面所有的中间结果相加ans[pos] = ans[pos - 1] + ans[i];if (dfs(dep + 1)) {// 继续下一层的递归return true;}// 讨论上一个中间结果与前面所有的中间结果相减ans[pos] = ans[pos - 1] - ans[i];if (dfs(dep + 1)) {return true;}}pos--; // 回溯return false;
}int main() {while (scanf("%d", &n)) {if (n == 0) break;depth = 0;pos = 0;ans[pos] = 1;while (!dfs(0)) {depth++;}printf("%d\n", depth);}return 0;
}

706. 设计哈希映射

方法一:纯数组
class MyHashMap {private static final int MAX_N = 1000001;int[] map;public MyHashMap() {map = new int[MAX_N];Arrays.fill(map, -1);}public void put(int key, int value) {map[key] = value;}public int get(int key) {return map[key];}public void remove(int key) {map[key] = -1;}
}/*** Your MyHashMap object will be instantiated and called as such:* MyHashMap obj = new MyHashMap();* obj.put(key,value);* int param_2 = obj.get(key);* obj.remove(key);*/
方法二:数组加链表
class MyHashMap {static class Node {int key, value;Node next;Node(int key, int value) {this.key = key;this.value = value;}}public Node[] table = new Node[(int)Math.pow(2, 14)];public MyHashMap() {}public int getIndex(int key) {int hash = Integer.hashCode(key);hash = hash ^ (hash >>> 16);return hash & (table.length - 1);}public void put(int key, int value) {int index = getIndex(key);if (table[index] == null) {table[index] = new Node(key, value);} else {Node cur = table[index];Node pre = null;while (cur != null) {if (cur.key == key) {cur.value = value;return;}pre = cur;cur = cur.next;}Node node = new Node(key, value);pre.next = node;}}public int get(int key) {int index = getIndex(key);if (table[index] != null) {Node cur = table[index];while (cur != null) {if (cur.key == key) {return cur.value;}cur = cur.next;}}return -1;}public void remove(int key) {int index = getIndex(key);if (table[index] != null) {Node pre = null;Node cur = table[index];while (cur != null) {if (cur.key == key) {if (pre == null) {table[index] = cur.next;} else {pre.next = cur.next;}return;}pre = cur;cur = cur.next;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Windows】SecureCRT v9.2.3永久使用教程亲测可用

​ 软件介绍 SecureCRT 是一款常用的 SSH&#xff08;安全外壳协议&#xff09;和 Telnet 客户端软件&#xff0c;主要用于远程服务器管理和网络设备配置。它具有以下主要功能&#xff1a; 1.安全连接&#xff1a;SecureCRT 提供了强大的加密算法&#xff0c;保障用户与服务…

Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?

在Java 15中&#xff0c;密封类&#xff08;Sealed Classes&#xff09;是一种新的特性&#xff0c;用于限制类的继承。通过密封类&#xff0c;开发者可以明确指定哪些类可以继承自该类&#xff0c;从而提供了一种更精细的控制继承机制的方式。 密封类的定义非常简单&#xff…

建立时间/保持时间为负是什么情况

目录 建立时间为负保持时间为负参考 在说明建立时间和保持时间为何为负的情况下&#xff0c;首先可以看看建立时间Tsu和保持时间Th的由来&#xff0c;可参考如下两篇文章&#xff1a; 建立时间和保持时间理解_为什么要满足建立时间和保持时间-CSDN博客 ic基础|时序篇&#xff…

GPT的使用

个人笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔&#xff1a;工作总结随笔_8、以前工作中都接触过哪些类型的测试文档-CSDN博客 网站sms-activate.or…

Linux知识点(3)

文章目录 11. 进程间通信11.1 管道11.1.0 |11.1.1 匿名管道11.1.2 命名管道11.1.3 用匿名管道形成进程池 11.2 system V共享内存11.2.1 system V函数11.2.2 system 命令 11.3 system V消息队列11.4 system V 信号量 12. 进程信号12.1 前台进程和后台进程12.1.1 jobs12.1.2 fg &…

哈尔滨等保测评之什么是linux及快捷方式,看完这篇你还有什么不懂得嘛?

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发&#xff0c;接触 Linux 机会相对较少&#xff0c;因此往往容易忽视它。但是学好它却是程序员必备修养之一。 什么是Linux Linux 系统内核与 Linux 发行套件的区别 Linux 系统内核指的是由 Linus Torva…

计算机网络(五)传输层

传输层 从通信和信息处理的角度看&#xff0c;传输层向它上面的应用层提供通信服务&#xff0c;属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层 传输层功能&#xff1a; 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别区别是&#xf…

实验5-8:求最小公倍数和最大公约数(简单循环结构)

实验5-8&#xff1a;求最小公倍数和最大公约数&#xff08;简单循环结构&#xff09; 输入两个整数m和n&#xff0c;用辗转相除法求两个数的最小公倍数和最大公约数。 输出格式&#xff1a;the greatest common divisor:%d\nthe minimum common multiple:%d\n 【输入形式】 输…

九河云:选择AWS有什么优势?

亚马逊云云服务器在国内仍然有大量的用户&#xff0c;这主要得益于其多方面的优势。九河云作为aws的合作伙伴&#xff0c;接下将对人们使用它的原因进行讲解&#xff1a; 首先&#xff0c;AWS在技术上具有显著优势。它提供了丰富的云服务功能&#xff0c;包括计算、存储、数据…

SSH客户端工具输入目标地址端口远程失败故障原因和解决方案

问题表现&#xff1a;SSH客户端工具输入目标地址端口远程失败时&#xff0c;出现ssh client 报 algorithm negotiation failed的异常信息。 使用SSH Secure Shell Client连接Linux服务器的SSH的时候有时会出现错误提示信息&#xff1a;ssh algorithm negotiation failed。这是…

maya模板导入动画

maya模板导入动画&#xff0c;第一帧为模板姿态 要将一个FBX文件中的动画数据导入另一个FBX文件的模板&#xff0c;并使得第一帧是模板的初始姿势&#xff0c;第二帧开始是动画&#xff0c;你可以在Maya中采用以下步骤来操作&#xff1a; 步骤 1: 导入模板FBX 首先&#xff…

ts文件用什么播放器?带您了解TS文件播放器的选择

ts文件用什么播放器&#xff1f;在数字多媒体时代&#xff0c;各种视频文件格式层出不穷&#xff0c;其中TS文件作为一种常见的视频封装格式&#xff0c;广泛应用于高清视频的制作与传输。然而&#xff0c;对于许多用户来说&#xff0c;如何选择合适的播放器来播放TS文件却是一…

node.js 什么是模板引擎?(具体介绍underscore)

前言&#xff1a;在 Web 开发中&#xff0c;数据的呈现通常是基于 HTML 和 CSS 的&#xff0c;而数据的变化又是非常频繁的&#xff0c;需要根据数据动态生成 HTML 标记。手动拼接 HTML 标记显然是一种非常低效的方式&#xff0c;不仅容易出错&#xff0c;而且难以维护。使用&a…

Windows电脑使用Everything+cpolar搭建在线资料库并实现无公网IP管理文件

文章目录 推荐前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家…

算法——马尔可夫与隐马尔可夫模型

HMM&#xff08;Hidden Markov Model&#xff09;是一种统计模型&#xff0c;用来描述一个隐含未知量的马尔可夫过程&#xff08;马尔可夫过程是一类随机过程&#xff0c;它的原始模型是马尔科夫链&#xff09;&#xff0c;它是结构最简单的动态贝叶斯网&#xff0c;是一种著名…

attention and tell论文【无标题】

这个公式使用LaTeX语法表示为&#xff1a; ( i t f t o t c t ) ( σ σ σ tanh ⁡ ) T D m n , n ( E y t − 1 h t − 1 x t ) \begin{pmatrix}i_t \\f_t \\o_t \\c_t\end{pmatrix} \begin{pmatrix}\sigma \\\sigma \\\sigma \\\tanh\end{pmatrix}T_{Dmn,n}\begin{pmatri…

SQL215 查找在职员工自入职以来的薪水涨幅情况

输入&#xff1a; drop table if exists employees ; drop table if exists salaries ; CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_…

ChatGPT实用技巧:提升论文写作效果

ChatGPT无限次数:点击直达 ChatGPT实用技巧&#xff1a;提升论文写作效果 随着人工智能技术的不断发展&#xff0c;ChatGPT作为一种先进的自然语言生成模型&#xff0c;为学术界和科研人员提供了强大的写作辅助工具。本文将介绍如何利用ChatGPT提升论文写作效果&#xff0c;并…

内外网文件摆渡系统,如何贯通网络两侧被隔断的工作流?

随着业务范围不断扩大&#xff0c;产生的数据体量越来越多&#xff0c;企业会采取网络隔离&#xff0c;对核心数据进行保护。网络隔离主要目的是保护企业内部的敏感数据和系统不受外部网络攻击的风险&#xff0c;可以通过物理或逻辑方式实现&#xff0c;例如使用防火墙、网闸、…

解释Python中的RESTful API设计和实现

解释Python中的RESTful API设计和实现 RESTful API&#xff0c;即符合REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;架构风格的Web服务接口&#xff0c;已成为现代Web应用程序通信的标准。Python作为一种灵活且强大的编程语言&…