自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

parting_soul的专栏

大道至简

  • 博客(106)
  • 收藏
  • 关注

原创 Android 消息机制

文章目录一. 背景二. 介绍三. 源码分析3.1 Message3.2 Handler3.3 MessageQueue3.4 ThreadLocal3.6 Looper3.7 总结四. 常见问题4.1 子线程是否能创建Handler4.2 在同一线程中 android.Handler 和 android.MessaegQueue 的数量对应关系一. 背景​ 在开发中我们常会有这种需求:进入一个...

2019-12-25 18:23:00 225

原创 ButterKnife源码解读

文章目录一. 概述二. 简单使用三. 源码分析3.1 ViewBinding 类3.2 ButterKnife.bind3.3 注解处理器3.3.1 整体流程3.3.2 注解编译器项目结构3.3.3 process方法1. 解析注解获得ViewBinding类信息集合2. 生成Java代码一. 概述ButterKnife 是一个依赖注入框架,主要用于绑定View、一些View的事件等等,可以大...

2019-12-20 14:08:18 281

原创 排序算法

一.插入排序直接插入排序 /** * 直接插入排序 稳定算法 * 将待排序的数分为两类,一类为有序数列,一类为无序数列,每次从无序数列中去取一个数, * 从有序数列尾端开始比较,若当前数比有序数小,将有序数往后移一位,不断重复该操作 * 直到找到第一个小于等于它的数,然后将带插入数插到该数后面. * 时间复杂度为o(n^2) 空间复杂度为o

2017-06-30 18:37:30 232

原创 二叉树的路径和

题目描述:  给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。思路: 二叉树前序遍历.1. 若当前节点为空,则直接返回2. 当前节点不为空,从根节点的路径和加上该节点的值得到根节点到该节点的和3. 当前节点的左儿子和右儿子为空,判断当前和是否与目标和一致,若一致,则保存路径,然后返回4. 当前节点

2017-06-28 20:26:45 473

原创 LL(1)递归下降

package com.parting_soul.LL1Analyze;import java.util.Scanner;/** * 递归下降 * Created by parting_soul on 17-4-12. * * S->AaS * S->BbS * S->d * A->a * B->^ * B->c * * select(S->AaS) = {a}

2017-04-18 20:40:40 1742

原创 LL(1)文法first集

LL(1) 文法 first集 思路:  利用递归第一步先计算可导空的非终极符集合  令first(X)=空  若 X->a... 则将a加入first(X)   若 X->ABC.. ,则计算first(A) ,first(B) ,first(C)..直到遇到第一个不导空的非终结符或者终极符,则将他们都加入first(X) 并除去^(空串)的情况  若 右部可以导空,将右

2017-04-08 11:56:29 1690

原创 词法分析器

简易词法分析器: 输入一段程序,分离出每一个符号串,并标记其类型package com.parting_soul;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOExcep

2017-04-08 11:41:02 1106

原创 确定有穷自动机

确定有穷自动机思路: 将状态与对应的行,符号与对应的列 索引进行映射,输入规则为状态转换表,之后输入待判断的字符串,判断是否会被自动机接受package com.parting_soul;import java.util.HashMap;import java.util.Map;import java.util.Scanner;/** * 确定有穷自动机 * 将

2017-04-08 11:35:26 1214

原创 可导空的非终极符集合

可空非终结符集合  思路:  1.用集合R表示可空非终结符集合,初始状态集合R为空   2.遍历所有产生式,若存在A->w,w为空,则将A加入Q集合中  3.若有产生式A->x1x2x3x4... x1,x2,x3,x4都在集合Q中,则把A加入到A中 4.重复步骤3,直至集合Q不再变化package com.parting_soul;import java.util

2017-04-08 11:28:33 1521

原创 菜单

package Menu;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import javax.swing.AbstractAction;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JCh

2016-04-10 15:04:58 397

原创 滑动条

import java.awt.BorderLayout;import java.awt.Component;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.util.Dictionary;import java.util.Hashtable;import javax.swing

2016-04-10 09:33:44 652

原创 组合框

import java.awt.BorderLayout;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swin

2016-04-09 14:15:19 398

原创 单选框以及边框

import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.BorderFactory;import javax.swing.ButtonGroup;import ja

2016-04-09 13:33:18 727

原创 文本框滚动条

import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.s

2016-04-03 20:59:06 618

原创 约瑟夫问题

500个人围成一个圈 从第一个开始数,只要是三的倍数,就退出,下一个人从头开始数,求最后那个人的序号。public class CountThreeQuit { public static void main(String[] args) { boolean[] arr = new boolean[500]; for(int i =0;i<arr.length;i++) {

2016-03-05 12:40:14 297

原创 高精度(java)

import java.math.BigDecimal;import java.util.Scanner;public class Bigdecimal { //普通高精度加法 public static BigDecimal add(String a,String b) { BigDecimal a1 = new BigDecimal(a); BigDecimal b1 =

2016-03-01 19:30:00 306

原创 第39阶台阶(蓝桥杯)

题目描述题目标题: 第39级台阶    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!    站在台阶前,他突然又想着一个问题:    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?    请你利用计算机的优势,帮助小明寻找答案。

2016-03-01 16:29:37 726

原创 马虎的算式(蓝桥杯)

题目描述标题: 马虎的算式小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。有一次,老师出的题目是:36 x 495 = ?他却给抄成了:396 x 45 = ?但结果却很戏剧性,他的答案竟然是对的!!因为 36 * 495 = 396 * 45 = 17820类似这样的巧合情况可能还有很多,比如:27 * 594 = 297 * 54假设 a b

2016-02-29 20:47:47 844

原创 星期几(蓝桥杯)

题目描述:    1949年的国庆节(10月1日)是星期六。     今年(2012)的国庆节是星期一。    那么,从建国到现在,有几次国庆节正好是星期日呢?    只要答案,不限手段!    可以用windows日历,windows计算器,Excel公式,。。。。。    当然,也可以编程!    不要求写出具体是哪些年,只要一个数目!    千万不要提

2016-02-29 19:35:30 753

原创 高斯日记(蓝桥杯2013)

内容:2013年第四届蓝桥杯软件大赛预赛第一题。题目描述题目标题: 高斯日记大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:17

2016-02-29 12:19:06 404

原创 hdu 4515 小Q系列故事——世界上最遥远的距离

题目链接: hdu 4515注意点:时间回到以前时,此时要得到day,不能直接取前一个月份的天书,而是要先得到月份,因为月份可能会回到去年的12月。#include#includeusing namespace std;int cy = 2013,cm = 3,cd = 24;int da[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,

2016-02-28 21:08:08 405

原创 hdu 2005 第几天

题目链接:hdu 2005#include#includeusing namespace std;int da[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31},};int isLeap(int y){ int ret = 0; if(y%4==

2016-02-28 17:09:03 301

原创 hdu 2033 人见人爱A+B

题目链接:hdu 2033#includeusing namespace std;int main(){ int ah,am,as; int bh,bm,bs; int t; cin>>t; while(t--) { cin>>ah>>am>>as; cin>>bh>>bm>>bs; am+=(as+bs)/60; as=(as+bs)%60; ah+=(

2016-02-28 16:47:42 260

原创 hdu 1706 An Easy Task

题目链接:hdu 1706#includeusing namespace std;bool isLeap(int y){ bool ret = false; if(y%4==0&&y%100!=0||y%400==0) ret = true; return ret;}int main(){ int t,n,y,sum; cin>>t; while(t--) { c

2016-02-28 16:18:45 293

原创 hdu 2133 What day is it

题目链接; hdu 2133思路;1年1月1日是星期一#include#includeusing namespace std;int da[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31},};char w[8][10]={"Sunday","Mo

2016-02-28 09:07:29 304

原创 hdu 1201 18岁生日

题目链接:hdu 1201思路:先不处理闰年的情况,后期处理闰年。#include#includeusing namespace std;bool isLeap(int y){ bool ret = false; if(y%4==0&&y%100!=0||y%400==0) ret = true; return ret;}int main(){ int t,y,m,

2016-02-28 08:25:14 213

原创 java的各类容器

1.HashMap例如 HashMapmapp = new HashMap();尖括号内的值前一个为键,后一个为值,前一个可以看做后一个的下标,尖括号里的类型只能是对象,不能为基本的类型。import java.util.HashMap;import java.util.Scanner;public class Hashmap { private HashMapcoinnames

2016-02-02 14:44:17 377

原创 Huffman树(二叉树)

算法思想:(二叉树)给定n个权值构造一个huffman树,将n个权值节点从小到大进行排列,建立一个单链表,然后每次选择表头最小的两个节点,把他们作为一个新节点的儿子,头节点的权值为左右儿子权值之和,然后断绝原来两个节节点和原有序链表的关系并将新建节点插入有序链表,不断进行这个过程,知道只有一个根节点。若建立m叉Huffman树,有n个权值节点,要插入x个全值为零的点,使得(n-k+

2015-12-14 19:35:01 668

原创 二叉排序树

特点:1)左子树非空则左子树所有节点的值小于根节点2)右子树非空则右子树所有节点的值大于根节点3)左右子树都为二叉排序树查找次数等于树高,最坏情况为o(n),最好为o(log n)以中序遍历输出则为有序序列,也可以称为树排序,排序复杂度o(n*log n)# include#include#includeusing namespace std;typedef i

2015-12-13 21:17:44 374

原创 hdu 1102 Constructing Roads(prim)

题目链接 : hdu 1102 Constructing Roads题意:给你n*n的邻接矩阵,若i表示行,j表示列,当i=2,j=3时,mapp[2][3]表示2到3这条路的权值,另外还有m组数据,表示这两点的路已经修建,让你算最少的花费使得所有点连通。prim的两种写法(朴素)#include#include#define maxn 111#define inf 1<<29

2015-12-03 08:09:48 222

原创 最短路模板

1.dijkstra算法算法思想:从某一个点开始,找与它距离最近的一个点,然后更新所有点到这条路径的距离,然后再次选取一个距离上一个点路径最短的点,将其加入路径,以此进行,直到求出起点到所有点的最短距离.注意:权值不能为负,如图1到3的距离应该是零,但这里结果为一1)邻接矩阵复杂度:o(n^2),而且点不能太多。(无向图模板)#include#include

2015-11-27 18:46:49 446

原创 hdu 1874 畅通工程续(dijkstr朴素)

题目链接: hdu 1874 畅通工程续若不存在a到b的道路,则a到b的距离为无穷,最后判断一下即可#include#include#include#define maxn 222using namespace std;const int inf = 1<<29;int vis[maxn],dis[maxn],mapp[maxn][maxn],n,m;void Dijkstr

2015-11-27 17:47:54 335

原创 hdu 3342 Legal or Not(判断成环)

题目链接:hdu 3342 Legal or Not题目大意:有n个人,m组关系(题目没有说没有重边,若用邻接矩阵,会被坑惨),表示a是b的主人,若存在关系,,则,也就是说a是b的主人,b是c的主人,那么a也是c的主人,这种关系是合法的,则输出YES,若a是b的主人,b是c的主人,c确是a的主人,那么这种关系不合法,则输出NO;思路:这里主要判断是否能进行拓扑排序,若存在环,则不能进行拓扑

2015-11-25 17:51:55 389 1

原创 最小生成树模板(prim+kruskal+prim的优化)

最小生成树:解决极小连通子图连接所有点使得花费最小问题1.prim算法思想:随机选择一个点,作为初始集合,并保存所有点到这个集合的最短距离,然后找与这个集合距离最短的点,也将其加入这个集合,由于新加入了一个点,所以要更新所有未加入集合点到这个集合的最短距离,不断重复,直到连通整个图。1)邻接矩阵(无向图)#include#include#include#define maxn

2015-11-24 01:29:32 800 1

原创 hdu 1863 畅通工程(prim+kruskal)

题目链接:hdu 1879 继续畅通工程(prim)#include#include#include#define maxn 111#define inf 1<<31-1using namespace std;int n,m,ans;int vis[maxn],mapp[maxn][maxn],dis[maxn];//dis记录未被加入集合的点到集合的最短距离void prim

2015-11-24 01:01:35 330

原创 二叉树首尾点的寻找

#include#include#include#define maxn 1111using namespace std;struct Tree{ Tree *lchild,*rchild; char data;};Tree* buildbypre(Tree *t){ char c; cin>>c; if(c=='#') return NU

2015-11-23 00:46:36 417

原创 二叉树的各类遍历

#include#include#include#include#define maxn 1111using namespace std;struct BinTree{ char data; BinTree *lchild,*rchild; int nc; BinTree(){nc = 0;}};BinTree* build(BinTree *t)

2015-11-23 00:07:21 210

原创 层号表示法转孩子兄弟表示法(二叉树)

孩子兄弟表示法:左儿子,右兄弟思路:建树建完一个节点,将其压入栈,以便下一个元素与他比较层号#include#include#include#define maxn 1111#define m 3using namespace std;struct Tree{ Tree *lchild,*rchild; char data; int leve;//记录该节点

2015-11-22 20:15:02 1292

原创 前序遍历的层号表示转孩子数组表示法

思路:有一个层号表示法,如 1a,2b,2s,3v,3e,2e,3w我们可以看出若当前层号比前一个的层号要大,则说明该节点是前一个节点的儿子,若相等,则说明是兄弟,若小于,则说明前面最近的那棵子树建立完毕。当前点的层号比上个节点大时,直接将该节点的父亲记录为上一个节点,若相等,记录兄弟的父亲,若小于,则不断找该节点的兄弟。#include#include#include#defi

2015-11-22 16:31:28 551

原创 hdu 2094 产生冠军

题目链接:hdu 2094 产生冠军#include#include#include#include#define maxn 11111using namespace std;int in[maxn],n;int vis[maxn];int main(){ string a,b; while(~scanf("%d",&n),n) { ma

2015-11-20 22:10:49 276

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除