半数集问题描述:
给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下。
(1) n∈set(n);
(2) 在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
(3) 按此规则进行处理,直到不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。
注意半数集是多重集。
其实很容易想到使用递归实现,算法如下:
import java.util.Scanner;
/**
* DateTime: 2016/10/6 11:18
* 功能:半数集问题
* 思路:
*/
public class Topic2_3 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();//要分解的数
System.out.println(Fun(n));
}
public static int Fun(int n) {
int result=1;
if(n>1){
for ( int i = 1; i <= n/2 ; i++ ) {
result +=Fun(i);
}
}
return result;
}
}
但是仔细观察上面的式子就会发现递归有一个缺陷就是在重复的计算已经使用过的值,这样会加大空间和时间的开销,因此我们可以用数组把计算过的值存起来,下次直接取。
算法如下:
import java.util.Scanner;
/**
* DateTime: 2016/10/6 11:18
* 功能:半数集问题
* 思路:
*/
public class Topic2_3 {
private static int[] array=new int[200];//存储计算过的值
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();//要分解的数
array[1]=1;//设置初值
System.out.println(Fun(n));
}
public static int Fun(int n) {
int result=1;
if(array[n]>0) return array[n];
for ( int i = 1; i <= n/2 ; i++ ) {
result +=Fun(i);
}
array[n]=result;
return result;
}
}
半数单集类似半数集,区别在于:半数集是多重集,而半数单集不是多重集,即集合中已有的元素不再添加到集合中。
例如:n=24,那么半数集set(24)中的元素1224就有如下两种方式可以生成:
24 → 1224
24 →224 → 1224
所以,1224就是一个被重复计算的元素。
import java.util.Scanner;
/**
* DateTime: 2016/10/6 14:43
* 功能:半数单集问题
* 思路:本题的半数集是单集,不允许重复元素,因此在计算时要踢除重复的元素
* 题目中的条件0<n<201 => 0<n/2<100 因此在计算时可能产生重复的元素是两位数
* 2位数x重复产生的条件是:在一位数y=x%10的半数集中已产生x,因此x/10<=y/2 或等价的2*(x/10)<=x%10
*/
public class Topic2_4 {
private static int[] array=new int[200];//存储计算过的值
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();//要分解的数
array[1]=1;//设置初值
System.out.println(Fun(n));
}
public static int Fun(int n) {
int result=1;
if(array[n]>0) return array[n];
for ( int i = 1; i <= n/2 ; i++ ) {
result +=Fun(i);
if((i>10) && (2*(i/10)<=i%10))
result -=array[i/10];
}
array[n]=result;
return result;
}
}
文章浏览阅读342次,点赞4次,收藏6次。该函数还允许使用 kmeans 聚类聚合行。如果行数太大,以至于 R 无法再处理其分层聚类,大约超过 1000 行,则建议这样做。与其单独显示所有行,不如提前对行进行聚类,并仅显示聚类中心。可以通过参数kmeans_k调整集群的数量。来源:https://www.rdocumentation.org/packages/pheatmap/versions/1.0.12/topics/pheatmap。一个绘制聚类热图的函数,可以更好地控制一些图形参数,如单元大小等。Examples 例子。_pheatmap基于kmeans绘制热图
文章浏览阅读369次。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml..._div四周阴影效果
文章浏览阅读1.7k次。Java 通过反射获取实体类对应的注释 _java获取实体类属性注解
文章浏览阅读2.3k次,点赞5次,收藏10次。在使用MyBatis进行多表联查时,想要获取关联外键的表的数据信息,使用association进行联查,但当外键表的字段名和主表相同时,外键表的数据就会被覆盖。_mybatis association绑定相同对象
文章浏览阅读2.7k次。体验1: 军神太强啦,1小时屯6题,瞬间AK,接下来的90分钟一直在跟榜体验2: A题原题,循环写得好就不麻烦,不然要写很多行,情况要想全并不难。 B题原题,有了上一场的提示之后,这题就不难了。 C题很简单(小声)。 D题卡掉了O(T*N*K*log(N))的方法,卡掉我5发logN ,不过还是可做。 E题水dp(组合数学)。 F题原题,记忆化搜索。体验3: 被DC两题卡到..._在湘大xx奶茶店夏天推出了新的饮料价格为5元。 很多学生都要买饮料,每个学生
文章浏览阅读2.8k次。需求: 点击预览图标查看该pdf报告问题: 1、最早是直接将请求倒的url放入到<web-view src="{{realUrl}}"></web-view>中展示,ios可以,安卓显示无法查看。 2、通过微信自身的API实现:wx.downloadFile({})、wx.saveFile({})、wx.openDocument({}) 3、对于文件较大的,下载较慢,需要点击过的进行缓存,再次点击无需下载,直接打开。 将点击过的下载的url添加给list的tem_微信浏览器请求pdf文件会缓存吗
文章浏览阅读680次。服务部署之配置网络策略服务(NPS)(基于Windows Server 2022)_windows server 部署网络策略服务
文章浏览阅读4.8k次,点赞6次,收藏29次。基于距离、概率、重构的视频异常检测概述_视频异常检测综述
文章浏览阅读107次。洛谷P3388#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int N=2e4+5;const int mod=1e9+7;vector<int> g[N];set<int> v;int dfn[N],low[N],fa[N];int n,m,tot;void tarjan(int x){
文章浏览阅读1k次。导语:小编相信,经常会使用到电脑的朋友们,对于启用硬件加速这个词一定都是不陌生的吧!可是呢,对于一些电脑小白们来说,往往会搞不清楚,这个启用硬件加速到底是个什么意思呢?启用之后,我们的电脑又会发生什么变化呢?也有一些人,在启用之后,却不知道应该如何关闭这个硬件加速,接下来,小编就来为大家介绍一下启用硬件加速是什么意思,以及它应该如何关闭。启用硬件加速是什么意思?简而言之,硬件加速就是利用硬件模块来..._linux 禁用硬件加速合成、图层和素材面板
文章浏览阅读8.1k次,点赞13次,收藏191次。1. 写在前面很多高级的机器学习模型(xgboost, lgb, cat)和神经网络模型, 它们相对于普通线性模型在进行预测时往往有更好的精度,但是同时也失去了线性模型的可解释性, 所以这些模型也往往看作是黑箱模型, 在2017年,Lundberg和Lee的论文提出了SHAP值这一广泛适用的方法用来解释各种模型(分类以及回归), 使得前面的黑箱模型变得可解释了,这篇文章主要整理一下SHAP的使用, 这个在特征选择的时候特别好用。这次整理, 主要是在xgboost和lgb等树模型上的使用方式, 并且用一个_python对shap的计算只能针对大数值吗
文章浏览阅读625次。这篇文章深入探讨了操作系统的各个方面,以及相关的计算机科学概念。文章的结构包括对操作系统的定义和功能的讨论,涵盖了硬件管理、操作系统特征、启动过程、运行环境等多个方面。作者使用思维导图和具体版本(如哈工大版本、王道版本)作为辅助,系统性地介绍了操作系统的运行机制,包括中断与异常、系统调用等内容。文章还回顾了操作系统的历史发展,按照不同线索(如哈工大版本)进行叙述,涵盖了操作系统的发展与分类、体系结构等方面。最后,文章提到了一些考研真题,强调了对计算机科学相关概念的深入理解。_2021