问题描述
在一个n*n的棋盘中,每个格子中至多放置一个车,且要保证任何两个车都不能相互攻击,有多少中放法(车与车之间是没有差别的)
输入格式
包含一个正整数n
输出格式
一个整数,表示放置车的方法数
样例输入
2
样例输出
7
数据规模和约定
n<=8
【样例解释】一个车都不放为1种,放置一个车有4种,放置2个车有2种。
算法思路:
这道题考察的是搜索回溯算法,我们都知道在象棋里车的攻击方式是直线行的,也就是说,只要不把他们放在同一行或者同一列就可以避免相互攻击,从题中我们可以了解到,题目要求不一定在每一行都必须放,即在这一行放不放都是一种方案(这就是与n皇后问题不同的地方)。因此我们搜索的时候都会对应两种选择,在这一行放或者不在这一行放,每种选择都要搜索一遍。
#include <bits/stdc++.h> using namespace std; int N; long long ans=1; //刚开始什么也不放也属于一种答案 bool visited[10]; //标志被放置的列 void dfs(int step) //表示从第step行开始放 { if(step>N) return ; //如果超过规定的棋盘边界N,跳出。 for(int i=1;i<=N;i++) if(!visited[i]) //如果这一列没有被放置 { visited[i]=true; //在这个位置放置它 ans++; //该情况的答案+1 dfs(step+1); //肯定不能在同一行放了,跳到下一行 visited[i]=false; //回溯 } dfs(step+1); //不一定从第step行开始放(即第step行没有也可以),从step+1行开始放也可以 } int main() { cin>>N; dfs(1);//从第一行开始搜 cout<<ans; return 0; } 下面我根据搜索的步骤给大家画一下搜到的答案的顺序情况
1.什么也不放
2.放第1行第1列
3.在2的基础上放第2列
4.回溯,放在第1行第2列
参考链接
https://www.kotlincn.net/docs/reference/scope-functions.html
背景介绍 1.本节主要讲述几个Kotlin库提供的几个方便的方法
let、run、with、apply 以及 also
takeIf以及 takeUnless
2.let、run、with、apply 以及 also的主要作用是在对象的上下文中执行代码块
3.当对一个对象调用这样的函数并提供一个 lambda 表达式时,它会形成一个临时作用域。在此作用域中,可以访问该对象而无需其名称。这些函数称为作用域函数
该作用域可以理解为花括号之内的区域
4.let、run、with、apply 以及 also的主要区别在于他们在作用域中如何引用自身以及他们作用域的返回值
5.takeIf 及 takeUnless的主要作用是检查对象状态
apply函数详解 /** * apply函数详解 * * 1 apply函数返回调用者本身 * 2 apply内部可以使用this代表调用者 * * apply可以进行链式调用 */ fun main() { val info = "Cai Huijian" // 不使用apply方法 println("apply 函数里面打印的this是 $info") println("info 长度是${info.length}") println("info 最后一个字符是${info[info.length - 1]}") println("info 全部转为小写:${info.lowercase(Locale.getDefault())}") println("==============") // 使用apply方法 val info2 = info.apply { println("apply 函数里面打印的this是 $this") println("
金九银十面试季结束,很多朋友反映:简历投了那么多,一个面试邀约都没有,有的是面了一两次就挂了,怎么办?是我的简历做的不好吗?还是我的技能不过关,我就是一个菜鸡?甚至有朋友因此信心大受打击,一蹶不振。
为了帮助大家提高面试的过率,今天在这里特意做一些分享吧。
PS:以下内容来自我们群里多位面试进入大厂的程序员所整理的社招面试题,对于部分程序员来说价值百万,大家记得好好看完,或者先收藏,后面慢慢看。
常规面试题 Android面试题 ListView 如何缓存的?RecyclerView联系人列表如何实现A-Z快速定位广播和EventBus的区别主线程Looper循环为什么没有卡主线程?nativePollOnceSharedPreference的线程安全、进程安全,如何跨进程Android 中实现多线程: threads, Handler, AsyncTask, IntentServiceAndroid 中如何实现多进程自定义View的过程:measure,layout,drawLayoutInflater#inflate 的 attrachToParent true 是什么意思theme 和 style 有什么区别,优先级有哪些进程间通信方式View 的渲染过程Binder 的原理和优势AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思Android 中有哪些动画,都说下Serializable 和 Parcelable 的区别你知道哪些Layout,ConstraintLayout 的特点是什么手机开发者选项有哪些,不保留活动是什么基本的数据类型有哪些?String、StringBuilder、StringBuffer的区别?Fragment是什么,使用场景和生命周期说一下Context和内存泄露线程创建的方法?Activity的启动模式和适用场景?ViewPager用过吗?然后扯到了它和Fragment联合; 内存泄露和内存溢出说一下 (1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。
(2)内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。
内存溢出的原因及解决方法
(1)内存溢出原因:
①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
③代码中存在死循环或循环产生过多重复的对象实体;
④使用的第三方软件中的BUG;
⑤启动参数内存值设定的过小
(2)内存溢出的解决方案:
①第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)
②第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。
③第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。
垃圾回收机制说一下?
四大组件 当内存不足时Service被杀死了,如何重启这个ServiceAndroid系统杀进程时,是怎么考虑进程优先级的?Fragment 的 ViewModel 如何访问到 Activity 的 ViewModel 的数据Activity 4种启动模式说下,各种启动模式适合的应用场景Activity 任务栈从底到顶为 A-B-C,低内存杀死进程后,重新点击,显示哪个?这时如果C里面有Fragment是怎样恢复的?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?window、view 和 Activity 的关系Activity、Fragment 的各个生命周期依次说一下,各个生命周期里面适合做什么Activity 调用 finish 方法后怎么走到 onDestroy 的 图片 Glide缓存特点Glide为我们做了哪些内存优化Glide如何加载 GIFListView 图片错位的原因,解决方案bitmap如何处理大图,30M的大图如何防止OOM? 网络 OKHttp 如何实现缓存OKHttp 的超时时间,有考虑DNS超时码OKHttp 线程池、连接池讲下OKHttp 的所有拦截器有哪些,请求失败了重试1、2次怎么做Retrofit实现机制Room注解如何在编译时生成类文件http 和 https 的区别,shakehand的过程说下状态码400、401,3xx有哪些网络劫持是什么,应该怎么做TCP三次握手,握手中的网络包各个标记位是多少,四次挥手说一下TCP 发送窗口是什么?混合开发h5了解多少浏览器窗口访问一个网址的过程POST 和 GET 有什么区别 优化 内存泄漏分析,LeakCanary的原理,泄漏对象是如何找到引用链的APK瘦身启动优化卡顿分析!!ANR分析!!为什么布局文件中层级越多,性能可能差很多你有哪些应用性能优化的经验必问ProGuard怎么写 Java 1、Java中==和equals和hashCode的区别2、int与integer的区别3、谈谈对java多态的理解4、String、StringBuffer、StringBuilder区别5、抽象类和接口区别6、Serializable 和Parcelable 的区别7、string 转换成 integer的方式及原理8、哪些情况下的对象会被垃圾回收机制处理掉?9、什么是强引用、软引用、弱引用以及虚引用?10、什么是依赖注入?能说几个依赖注入的库么?11、静态代理和动态代理的区别,什么场景使用?12、Java的异常体系13、JVM的回收算法是怎样的14、说一下泛型原理,并举例说明15、能说说HashMap常用操作的底层实现原理吗?16、垃圾回收机制和调用 System.
这个问题的起因是在使用FeignClient 设置header信息的时候无效
@FeignClient(url = "http://localhost:8083", name = "demoClient") public interface FeignTest { @RequestMapping(value = "/hello", method = RequestMethod.GET, headers = "host=www.test.com") String hello(@RequestParam("id") String id, @RequestParam("name") String name); } 接收方需要Host信息,但是使用这种方式发出去请求一直报 404,最后跟踪代码发现问题是在添加header的时候会过滤 key 为 host 的 header,最后发现这个策略执行是因为默认情况下这个系统属性sun.net.http.allowRestrictedHeaders
为 false
所以问题就在于把这个属性设置为 true 即可
System.setProperty("sun.net.http.allowRestrictedHeaders", "true");
原文地址:https://blog.csdn.net/weixin_42262944/article/details/107585320
最近在工作中遇到了一个应用程序usleep不准的问题,排查过程中了解了一下usleep的内核实现,简单的讲一下低精度模式下的usleep机制。
先把最终结论贴出来,内核使能 CONFIG_HIGH_RES_TIMERS选项,且平台支持高精度定时器模式,即可解决该问题。
下面主要来分析为什么在未使能高精度定时器的情况下,usleep不准的问题。
参考文章
可参考链接中系列时间子系统介绍文章
Linux时间子系统之一:clock source(时钟源)
测试代码
测试代码如下:
#include <sys/time.h> #include <unistd.h> #include <stdio.h> #include <sys/time.h> #include <unistd.h> #include <stdio.h> int main(void) { int sleepTime = 0; int sleepus = 0; struct timeval t1; struct timeval t2; while(1) { gettimeofday(&t1, NULL); printf("start time %d(s).%06d(us)\n", (int)t1.tv_sec, (int)t1.tv_usec); usleep(10000); gettimeofday(&t2, NULL); printf("end time %d(s).%06d(us)\n", (int)t2.tv_sec, (int)t2.tv_usec); sleepTime = (int)((t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec) / 1000); sleepus = (int)((t2.
22mm金属按钮开关如在实际的使用中,为了防止误操作,通常在按钮上做出不同的标记或涂以不同的颜色加以区分,其颜色有红、黄、蓝、白、黑、绿等。一般红色表示“停止”或“危险”情况下的操作;绿色表示“启动”或“接通”。急停按钮必须用红色蘑菇头按钮。按钮必须有金属的防护挡圈,且挡圈要高于按钮帽防止意外触动按钮而产生误动作。安装按钮的按钮板和按钮盒的材料必须是金属的并与机械的总接地母线相连。
四脚按键开关跟我们平时用的轻触开关、六脚开关是一个类型的东西,四脚按键开关不能够自锁,但是,每当按下去一次,信号就发生一次跳变。未按下时只有两组引脚连接,按下之后,四个引脚连接在一起。
四脚按键开关接线
四脚按键开关跟我们平时用的轻触开关、六脚开关是一个类型的东西,四脚按键开关不能够自锁,但是,每当按下去一次,信号就发生一次跳变。未按下时只有两组引脚连接,按下之后,四个引脚连接在一起。
按钮开关怎么接线
底部可以表示为:
按钮开关怎么接线
为保证准确,建议在使用前用万用表的“二极管、电阻、蜂鸣档”测量各个引脚的导通性。
一般来说开发都是从一个主分支上重新建一个新分支,下面就是提交自己分支的步骤
先在自己所建立的分支
上传自己所在分支(这里是先上传到本地,并不是其他分支)
然后切换到你想合并代码的分支
拉去你想合并代码的分支的最新代码
然后从项目进去有个merge(最新版本,老版本也是这么进去的,不过可能实在那个提交history下面),
点击之后就会出现这个,选择自己提交的分支(就是你之前提交本地的分支)
然后再提交代码就行了。
Vue中的watch与computed - gunelark - 博客园
Vue中的watch与computed 看了网上很多资料,对vue的computed讲解自己看的都不是很清晰,今天忙里抽闲,和同事们又闲聊起来,对computed这个属性才有了一个稍微比较清晰的认识,下面的文章有一部分是转自: Vue 2.0学习笔记: Vue中的computed属性_Vue, Vue学习笔记, 会员专栏 教程_W3cplus © w3cplus.com,
感觉这篇文章上面的例子通俗易懂,所以此处借用了。
自己的理解:
computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理;computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化,举例:购物车里面的商品列表和总金额之间的关系,只要商品列表里面的商品数量发生变化,或减少或增多或删除商品,总金额都应该发生变化。这里的这个总金额使用computed属性来进行计算是最好的选择 与watch之间的区别:
刚开始总是傻傻分不清到底在什么时候使用watch,什么时候使用computed。这里大致说一下自己的理解:
watch主要用于监控vue实例的变化,它监控的变量当然必须在data里面声明才可以,它可以监控一个变量,也可以是一个对象,但是我们不能类似这样监控,比如: watch:{ goodsList.price(newVal,oldVal){ //监控商品列表中是商品价格 } } 这样会报错。只能监控整个对象或单个变量,如下所示:
data(){ return { example0:"", example1:"", example2:{ inner0:1, innner1:2 } } }, watch:{ example0(newVal,oldVal){//监控单个变量 …… }, example2(newVal,oldVal){//监控对象 …… }, } watch一般用于监控路由、input输入框的值特殊处理等等,它比较适合的场景是一个数据影响多个数据 这里是我2020年6月30日补充上去的,看到评论里说还有一种方法可以监听对象,迫不及待试了一下,真的可以,所以更新下文章:
监听appversionName用下面的方式,将对象和属性用引号的方式:‘对象名.属性名’(newVal,oldVal){}
1 watch: { 2 "dialogForm.appversionName"(newVal, oldVal) { 3 console.log("新值:"+newVal,"旧值:"+ oldVal); 4 } 5 }, 监听情况如下:
以下内容是摘自Vue 2.0学习笔记: Vue中的computed属性_Vue, Vue学习笔记, 会员专栏 教程_W3cplus © w3cplus.
一、知识点:
1、原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。
2、联邦学习为移动设备上的模型共享创造可能,模型训练与云端存储解耦,移动端存储训练数据,并进行模型训练和进化。
联邦学习机理如下:设备下载云端最新的共享模型,本地改进和训练,个性化后的模型被抽取为一个更新文件,将差异部分加密上传云端,在云端和其它设备上传的最新模型差异做平均化更新,以改善共享模型。
网络的上传速度通常比下载速度慢,谷歌开发出一种新颖的算法:“random rotations and quantization”,将上传更新的通信速度提升为原来的100倍。这些算法都聚焦在深度学习的训练上,还针对点击率预测的问题设计出了“high-dimensional sparse convex"模型。
3、差分隐私
差分隐私是用来防范差分攻击的,我们对加入新样本后的结果查询中加入噪声,使得攻击者无法辨别某一样本是否在数据集中,即达到双兔傍地走安能辨我是雄雌的境地。
4、智能合约,类似于实际合同效力,在计算机语言描述和实现,在没有第三方参与的情况下进行合约的触发和执行。
智能合约区别于传统合约:
1)合约的触发与执行合二为一次原子操作
2)去中心化和自动化地合约流程,无须第三方中心机构的介入。
5、横向和纵向联邦学习
横向联邦学习适用于联邦学习的参与方的数据有重叠的数据特征,即数据特征在参与方之间是对齐的,参与方数据样本不同。纵向联邦学习 适用于联邦学习参与方的训练数据有重叠的数据样本,即参与方之间的数据样本对齐的,但数据特征上不同。
二、钱学海团队的研究成果:
1、钱学海认为,分布式训练系统的核心问题是不同计算设备的通信以及由于计算和通讯性能的差异带来的异构性,具体可以看做面临三个方面的挑战,分别是:通信(Communication)、异构性(Heterogeneity)和多因素交互的复杂性 (Complex Trade-offs )。
(1)通信:早期分布式训练是一个中心化结构,每一个worker会把自己计算得到的梯度上传到中心节点,中心节点对all worker 的梯度平均化处理,再传回各个worker。存在中心节点通信瓶颈问题;第二代分布式训练系统结构是Ring-All-Reduce,节点同步环+并行流水线工作机制,通信更加高效,但当每个worker的运行性能差距较大时,系统性能受限于运行效率最低的worker。
Ring All-Reduce系统结构
(2)异构性:确定异构性(Deterministic heterogeneity)和 动态异构性(Dynamic heterogeneity )。确定异构性是指不同的设备通常有不同的计算能力(比如:采用不同的GPU或 TPU系列),并且设备或节点具有不同的网络通信性能。动态异构性是由资源共享造成的,即同一个设备对不同的应用提供的计算性能不同。分布式训练系统下会产生Slow Worker,被称为Straggler。Straggler问题亦称之为异构性问题,即平台上Worker具有不同的运行性能时,整个系统的性能受限于运行效率最低的Worker。
(3)复杂性:全局考量系统设计,如考虑并行性与通信之间的关系,一般采用Data Parallelism 和 Model Parallelism
Data Parallelism Model Parallelism
2、去中心化的分布式训练
去中心化方法下,可定义任意模式的通信图。提供了一个更灵活的通讯方式。每一个节点的运行过程如下:
根据Min-batch数据和当前的模型进行梯度计算,并更新模型;
把参数发送给“邻居”Worker;
接收其他Worker的参数,并进行Reduce操作;
更新模型参数,进入下一个Iteration。
此训练中的同步是指每个Worker在做Reduce操作时,所有的参数应该出自同一个Iteration。这是在构建去中心化分布式训练系统中独特的一个问题,在PS和Ring All-Reduce中都不存在这样的问题,因为它们有一个非常自然的中心节点或者有一个同步的操作去划分Iteration。
PS和Ring All-Reduce
3、 基于同步算法的去中心化分布式训练
基于队列的同步算法(Queue-based Synchronization),该算法应用于同步算法系统设计中,主要解决两个问题:(1)系统应该能够自适应按需分配资源,而不是持续分配资源(2)Backup Worker是解决异构问题的一种技术,它能够控制同步的松紧程度(Bounding Iteration Gap),但会造成无穷大的Iteration gap
基于队列的同步是指每个Worker有两个队列:Update Queue(UQ), 用来存储邻居发送来的信息,Token Queue(TQ), 用来控制同步。假设在部署协议时,设定Iteration Gap的最大容忍是2,则TQ的Token数最大为2。协议开始执行以后,每一个Worker都可以向其他Worker发送参数更新。Worker要想进入下一个Iteration,必须要从邻居的TQ中获取Token放入自己的TQ当中。如果C要进入下一个Iteration,必须先从TQ_A->C和TQ_B->C中获取token,分别放入TQ_C->A和TQ_C->B中。
LaTeX 常用数学公式 1. 常用希腊字母 δ , λ , α , β , γ , θ , ϕ , φ , ϵ , ε , π \delta,\lambda,\alpha,\beta,\gamma,\theta,\phi,\varphi,\epsilon,\varepsilon,\pi δ,λ,α,β,γ,θ,ϕ,φ,ϵ,ε,π
Δ , Λ , ω , μ , η , ζ , ρ , ξ \Delta,\Lambda,\omega,\mu,\eta,\zeta,\rho,\xi Δ,Λ,ω,μ,η,ζ,ρ,ξ
示例1显示1示例2显示2示例3显示3\alpha α \alpha α\theta θ \theta θ\upsilon υ \upsilon υ\beta β \beta β\lambda λ \lambda λ\phi ϕ \phi ϕ\gamma γ \gamma γ\mu μ \mu μ\varphi φ \varphi φ\delta δ \delta δ\pi π \pi π\kappa κ \kappa κ\epsilon ϵ \epsilon ϵ\xi ξ \xi ξ\nu ν \nu ν\varepsilon ε \varepsilon ε\rho ρ \rho ρ\Delta Δ \Delta Δ\zeta ζ \zeta ζ\sigma σ \sigma σ\Lambda Λ \Lambda Λ\eta η \eta η\omega ω \omega ω\Phi Φ \Phi Φ 说明:这里仅列举常用的一些希腊字母。
工作中使用Jmeter压测时,需要大数据量,可以使用MySQL创建函数和存储过程,批量插入大数据
右击新建函数,创建过程
完成后自动创建
在body部分写入过程:
DECLARE id INT DEFAULT 100000; -- 声明 默认开始值
DECLARE vn VARCHAR(10) ; DECLARE jobnum VARCHAR(10); while id<=100500 do -- 开始循环,直到到达值后停止运行
SET tn='VN' ;
SET jobnum=CONCAT(tn,id); -- 拼接工号
/*插入表数据*/
INSERT INTO `table_name`(`job_num`,......`) VALUES (jobnum,);
set id=id+1; --每次递增+1
end while; -- 结束循环
现象:VS2019控制台输出中文乱码 第一种解决方法:安装插件Format on Save重启VS2019生效 (!!!注意:别装错了,刚开始我就装错了这个UTF-8(No BOM),装了这个插件的同学,记得要删掉,不然还是会出现问题。)
第二种解决方法:设置VS2019编码为Unicode(UTF-8 代签名) -代码页65001 看清楚:一定要是带签名的。
参考b站视频:C语言问题VS2019新建立的C语言文件,默认都是GBK-936编码集或无BOM的UTF8编码集.怎么修改成默认的UTF8(带BOM)-65001
祝大家学业进步,工作顺利。
Description This is an interactive problem.
Jury initially had a sequence a a a of length n n n, such that a i = i a_i=i ai=i.
The jury chose three integers i , j , k i, j, k i,j,k, such that 1 ≤ i < j < k ≤ n , j − i > 1 1≤i<j<k≤n, j−i>1 1≤i<j<k≤n,j−i>1. After that, Jury reversed subsegments [i,j−1] and [j,k] of the sequence a a a.
在这个系列中,将制作一个雷霆战机游戏。
自动开火 首先,让对玩家射击方式做一点改动。只要空格键被按下,让自动发射子弹。
为此,将向Player添加两个新属性:
self.shoot_delay = 250 self.last_shot = pygame.time.get_ticks() shoot_delay将测量飞船在发射另一颗子弹之前应该等待的时间长度(以毫秒为单位)。last_shot将跟踪最后一颗子弹射击的时间,以便知道何时有足够的时间再次射击。
现在将把开火key(space空格键)添加到键盘检查player的更新中:
def update(self): self.speedx = 0 keystate = pygame.key.get_pressed() if keystate[pygame.K_LEFT]: self.speedx = -8 if keystate[pygame.K_RIGHT]: self.speedx = 8 if keystate[pygame.K_SPACE]: self.shoot() 将所有射击逻辑放在一个新方法中:
def shoot(self): now = pygame.time.get_ticks() if now - self.last_shot > self.shoot_delay: self.last_shot = now bullet = Bullet(self.rect.centerx, self.rect.top) all_sprites.add(bullet) bullets.add(bullet) 现在当空格键被按下时,游戏将检查自最后一个子弹创建以来已经过了多少时间。如果它大于shoot_delay毫秒,则会触发另一个子弹,并使得last_shot进行更新。最后,可以从游戏循环中删除以下几行:
elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: player.shoot() 动画爆炸 对于下一个补充,希望通过使敌机爆炸而不仅仅是消失,来使敌机的破坏更具视觉吸引力。为了实现这一点,需要一组爆炸图形的动画帧,需要在被破坏的敌机的位置创建一个精灵,它将在动画帧序列中循环。这是要使用的动画序列:
首先,需要将这些图形加载到游戏中并将它们存储在列表中。与玩家精灵一样,需要调整图像大小,当这样做时,会创建两个不同大小的爆炸:一个大爆炸—当流星被摧毁时; 还有一个小爆炸—当一颗流星击中玩家时。所以将设计一个字典explosion_anim,包含两个列表,lg和sm。由于文件都是相同的,使用00-08中的数字,可以使用循环来加载它们,调整大小并将它们附加到列表中:
explosion_anim = {} explosion_anim['lg'] = [] explosion_anim['sm'] = [] for i in range(9): filename = 'regularExplosion0{}.
汽水瓶 描述
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是 5 瓶,方法如下:先用 9 个空瓶子换3瓶汽水,喝掉 3 瓶满的,喝完以后 4 个空瓶子,用 3 个再换一瓶,喝掉这瓶满的,这时候剩 2 个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用 3 个空瓶子换一瓶满的还给老板。如果小张手上有 n 个空汽水瓶,最多可以换多少瓶汽水喝?
数据范围:
输入的正整数满足 1<=N<=100
注意:
本题存在多组输入。
允许如题面所述向老板借汽水。
输入的 0 仅表示输入结束,并不用输出结果
输入描述:
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。
输出描述:
对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。
示例1
输入:
3
10
81
0
输出:
1
5
40
说明:
样例 1 解释:用三个空瓶换一瓶汽水,剩一个空瓶无法继续交换
样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一瓶汽水喝完得三个空瓶换一瓶汽水还给老板
#include<iostream> using namespace std; int main(){ int N; while(cin>>N){ if(N==0) break; int hasDrink=0; while(N!=1 && N!
向日葵远程连接Ubuntu出现 “连接中断” 的解决方法
https://www.cnblogs.com/wangling1820/p/13448397.html
方法一、参考博客1:https://blog.csdn.net/wzf20162016/article/details/104389112
cd /etc/profile.d/
sudo vi xrk.sh
然后输入:
#!/bin/bash
xhost +
保存并退出。
最后
sudo chmod 777 xrk.sh
reboot
方法二、参加博客2:https://blog.csdn.net/ZXY115019/article/details/106142143
首先打开ubuntu下的向日葵客户端;
打开终端,输入下列命令
sudo apt update
sudo apt upgrade
sudo apt install lightdm
安装时弹出界面选择lightdm即可,
然后重启电脑。【重启电脑很重要!!!】~~亲测有效
openinterest(未平仓合约,国内股市数据一般用不到)
data = bt.feeds.GenericCSVData(
dataname = datapath,
fromdate = datetime.datetime(2019, 10, 1),
todate = datetime.datetime(2020, 2, 29),
nullvalue = 0.0,
dtformat = ('%Y-%m-%d'),
datetime = 0,
open = 1,
high = 2,
low = 3,
close = 4,
volume = 5,
openinterest = -1
)
通常包括以下类别的数据:Open(开盘价), High(最高价), Low(最低价), Close(收盘价), Volume(成交量), OpenInterest(无的话设置为0)。
open_interest就是指未平仓合约,是在某一交收月份期货市场中未通过抵消或交收套现的合约数。
#量化分析入门9:backtrader策略入门1(数据处理)
#读取数据,并将数据格式化为backtrader的数据格式(即DataFeeds形式)
#作者:冯德平(山野雪人)
import pandas_datareader.data as web import datetime import numpy as np import pandas as pd ''' #从网络(雅虎)读取数据5年(默认为5年)的股票数据: #stock=web.get_data_yahoo("600797.SS") #上交所股票用.SS,深交所用.SZ #print(stock) #读取某一时间到今天的数据: start = datetime.datetime(2019,1,1) #获取数据的时间段-起始时间 end = datetime.date.today() #获取数据的时间段-结束时间 stock = web.DataReader("000002.SZ", "yahoo", start, end) #获取万科的数据 #stock = web.DataReader("MSFT", "yahoo", start, end) #获取微软的数据 #print(stock) stock.columns=["high","low","open","close","volume","adj close"] #修改列名(将字段开头字母小写) #print(stock) stock=np.round(stock,2) #保留小数点两位 print(stock) stock.to_csv("000002net.csv") ''' #从文件中读取数据: stock=pd.read_csv("000002net.csv") stock.rename(columns={'Date':'datetime'},inplace=True) #修改列名,将Date改成datetime #print(stock) ''' #也可以这样修改列名 stock["datetime"]=stock["Date"] #复制Date列 del stock["Date"] #删除Date列 ''' #注意下面的读取字段(列)与前面的顺序不同(按backtrader的列的顺序读取) stock=stock[["
运用session,javabean,servlet实现网页计数器 目录
一、运行结果
二、原理
1、session
2、Javabean
但是有个小问题
3、application
三、代码分享
count.jsp
Bean.java
一、运行结果 二、原理 1、session 运行网页,没有就创建一个session,有的话就访问一次就加一
但是session的作用域只是会话域,这个创建的对象对于参与与某客户端会话的所有组件有效(假如换一个浏览器,这个session不会参与另一个浏览器的计数)
2、Javabean 在jsp页面里
<jsp:useBean>创建Bean
<jsp:setProperty> 设置Bean属性
<jsp:getProperty>获取Bean属性
需要指定javaBean的生存范围,默认page。(生存范围有:page,request,session,application 依次作用域变大)
需要指定特定的类来进行逻辑运算,例如指定的Bean.java 类
还要注意的是如果有多个javabean,他们的命名不能一样
但是有个小问题 这块的application运行的结果是2,我在idea中调试时count的值是1,但是网页中显示出来的是2,希望知道原因的哥哥姐姐们能告诉我一下!还有就是下面用application实现的时候也是这个错误,我就把下面的else number=1 屏蔽掉了最后显示的是1,我也不知道对不对该不该屏蔽,希望有人可以告诉我为甚么???!
3、application 运行时判断有无application,没有就先创建一个
application的作用域咱对象在整个应用的生命周期里都有效(换个浏览器运行,这个里面的计数也会存在,会继续加一)
三、代码分享 count.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <br> <head> <title>Title</title> </head> <br> <font color="red">1、利用session实现网页计数器</font> <% int number1 = 0; HttpSession session1 = request.getSession(); Object counter = session1.getAttribute("COUNTER"); if(counter ==null){ number1=1; }else { number1=((Integer)counter).intValue(); number1++; } session1.
在 MainActivity 类对应的源文件 MainActivity.java 或 MainActivity.kt 开头,不要漏掉 package 语句。例如:
package com.example.myfirstapplication 如果是将别处的代码整段复制粘贴,替换了 MainActivity.java 或 MainActivity.kt 的全部原有内容,易出现此情形。