“阿喵小年糕”通过精心收集,向本站投稿了20篇KPM算法心得体会,下面小编给大家整理后的KPM算法心得体会,希望大家喜欢!
- 目录
篇1:KPM算法心得体会
KPM算法心得体会
next函数求法(目前只能死记) 0 1 2 3 4 a b a b c next -1 0 0 1 2 过程: 第0位,next[0]=-1 第1位,next[1]=0 第2位,b!=p[0]=a =>next[2]=next[next[1]]=-1+1=0 第3位,a==p[0]=a =>next[3]=0+1=1 第4位,b==p[1]=b =>next[3]=1+1=2 技巧:算哪位就看前一位 -------------------------------------------- next优化过程 0 1 2 3 4 a b a b c next -1 0 0 1 2 next_adv -1 0 -1 0 2 第1位,b!=p[0]=a => next_adv[1]=next[1]=0,不变 第2位,a==p[0]=a => next_adv[2]=next[0]=-1 第3位,b==p[1]=b => next_adv[3]=next[1]=0 第4位,c!=p[2]=a => next_adv[1]=next[1]=2,不变 技巧:比较p[i]和p[next[i]],不一样,不变,一样,赋值 ---------------------------------------------- KPM匹配过程 aaaaabababcaaa ab ab ab ab ababc ababc 产生匹配 ab ab --------------------------------------------- 源代码如下: #include篇2: 算法设计心得体会
一、实验内容:
这学期的算法与设计课,老师布置了这四个问题,分别是货郎担问题,动态生成二维数组,对话框下拉列表,排序问题。
二、学习掌握:
基本程序描述:
(1)货郎担问题:货郎担问题属于易于描述但难于解决的著名难题之一,至今世界上还有不少人在研究它。货郎担问题要从图g的所有周游路线中求取具有最小成本的周游路线,而由始点出发的周游路线一共有(n一1)!条,即等于除始结点外的n一1个结点的排列数,因此货郎担问题是一个排列问题。货郎担的程序实现了利用穷举法解决货郎担问题,可以在城市个数和各地费用给定的情况下利用穷举法逐一计算出每一条路线的费用,并从中选出费用最小的路线。从而求出问题的解
(2)费用矩阵:费用矩阵的主要内容是动态生成二维数组。首先由键盘输入自然数,费用矩阵的元素由随机数产生,并取整,把生成的矩阵存放在二维数组中,最后把矩阵内容输出到文件和屏幕上。它采用分支界限法,分支限界法的基本思想是对包含具有约束条件的最优化问题的所有可行解的解(数目有限)空间进行搜索。该算法在具体执行时,把全部可行的解空间不断分割为越来越小的子集,并为每个子集内的解计算一个下界或上界。动态生成二维n*n的数组程序利用指针表示数组的行和列,并逐一分配空间,在输入n的数值后,系统自动分配空间,生成n*n的数组,并产生随机数填充数组,最后将结果输入到指定文件中。
(3)Mfc:在下拉列表框中添加内容程序,在下拉列表对应的函数中利用addstring添加需要的内容。首先定义下拉列表框为ccombox型,并定义其属性名,利用addstring函数可以任意添加需要的内容。a排序问题:快速排序的运行时间与划分是否对称有关,其最坏情况发生在划分过程中产生的两个区域分别包含n-1个元素和1个元素的时候。其算法的时间复杂度为O(n 2),在最好的情况下每次划分的基准恰好为中值,可得其算法时间复杂度为O(nSn)。 算法的实现和理解和代码实现完全是两回事,想要完全掌握一种算法,需要动手实践,用代码实现,才能理解透彻,真正掌握。b对话框下拉列表:这个项目简单易懂,轻松实现。
三、疑问与总结:
货郎担的问题,我认为穷举法相对比而言是比较初级的方法,费时耗力,适合在练习时选用,但是在实际问题中不建议采用。克鲁斯卡尔或者普里姆算法求取最小生成树的方法来解决货郎担的问题是更适合现实解决问题的。我认为程序可以用switch函数来将函数分成几个部分更人性化,比如分为解决问题的的选项,输出结果选项,退出程序选项等。再有就是费用矩阵的值可以从文件中读取,而结果也可以直接放在指定文件中,这样在实际应用中比较广泛。
动态生成二维数组的程序我认为如果按照规范性,我的方法是中规中矩的,毕竟再向下延伸,生成三维的数组,需要三层的指针来实现。但是就程序的简化程度和计算机处理时间来说,我认为这样双层指针的算法有些太占用内存,毕竟要给行和列各分配n个空间。我通过与同学的交流,我发现可以用1位数组来实现二维的n*n的数组。首先分配n*n的空间,
然后通过循环在一行的数据达到n时自动换行。这样程序得到了一定的简化,并且减少了一定的.内存使用。我认为这种方法是比较贴合实际的。
四、心得体会
在计算机软件专业中,算法分析与设计是一门非常重要的课程,很多人为它如痴如醉。很多问题的解决,程序的编写都要依赖它,在软件还是面向过程的阶段,就有程序=算法+数据结构这个公式。算法的学习对于培养一个人的逻辑思维能力是有极大帮助的,它可以培养我们养成思考分析问题,解决问题的能力。
如果一个算法有缺陷,或不适合某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂性和时间复杂度来衡量。算法可以使用自然语言、伪代码、流程图等多种不同的方法来描述。计算机系统中的操作系统、语言编译系统、数据库管理系统以及各种各样的计算机应用系统中的软件,都必须使用具体的算法来实现。算法设计与分析是计算机科学与技术的一个核心问题。因此,学习算法无疑会增强自己的竞争力,提高自己的修为,为自己增彩。
篇3: 算法设计心得体会
通过两周的课程设计,完成了预定的目标,其中有很多的随想。老师的题目发下来的很早,大概提前了3周,当时就着手搜索有关线索二叉树的思想,思路,借了一本《数据结构-c语言描述》,在大体上就有了一个轮廓,先是输入二叉树,在对二叉树进行线索化,依次往下,但在具体实现时,遇到了很多问题:首先是思想的确定,其非常重要,以前有了这个想法,现在愈加清晰起来,因此,花了大量的时间在插入删除的具体操作设计上,大概三个晚上的时间,对其中什么不清晰明确之处均加以推敲,效果是显著的,在上机上相应的节约了时间。
通过具体的实验编码,思路是对的,但是在小问题上摔了一次又一次,大部分时间都是花在这方面,这个节点没传过来啊之类的,以后应该搞一个小册子,记录一些错误的集合,以避免再犯,思想与C语言联系起来,才是我们所需要的,即常说的理论与实践的关系。
数据结构是基础的一门课,对于有过编程经验的人,结合自己的编程体会去悟它的思想;而且我觉得随着编程经历的丰富对它的体会越深入,最初接触是对一些思想可能只是生硬的记忆,随着学习的深入逐渐领悟了很多。看了这次课程设计的题目,虽然具体要求没有看清,但是总结一下,可以看出,其需要我们能把一个具体案例或一件事情反映为程序来表达,数据结构就是桥梁,通过自己的设计,使应用能力得以融汇,对与问题,具有了初步的分析,继而解决之的能力,感觉对以后的学习会有很大的帮助,学习无非是用于实践。
认识到自己的不足,希望能有进一步的发展。
篇4: 算法设计心得体会
完成了这次的二元多项式加减运算问题的课程设计后,我的心得体会很多,细细梳理一下,有以下几点:
1、程序的编写中的语法错误及修改
因为我在解决二元多项式问题中,使用了链表的方式建立的二元多项式,所以程序的空间是动态的生成的,而且链表可以灵活地添加或删除结点,所以使得程序得到简化。但是出现的语法问题主要在于子函数和变量的定义,降序排序,关键字和函数名称的书写,以及一些库函数的规范使用,这些问题均可以根据编译器的警告提示,对应的将其解决。
2、程序的设计中的逻辑问题及其调整
我在设计程序的过程中遇到许多问题,首先在选择数据结构的时候选择了链表,但是链表的排序比较困难,特别是在多关键字的情况下,在一种关键字确定了顺序以后,在第一关键字相同的时候,按某种顺序对第二关键字进行排序。在此程序中共涉及到3个量数,即:系数,x的指数和y的指数,而关键字排是按x的指数和y的指数来看,由于要求是降幂排序且含有2个关键字,所以我先选择x的指数作为第一关键字,先按x的降序来排序,当x的指数相同时,再以y为关键字,按照y的指数大小来进行降序排列。
另外,我在加法函数的编写过程中也遇到了大量的问题,由于要同时比较多个关键字,而且设计中涉及了数组和链表的综合运用,导致反复修改了很长的时间才完成了一个加法的设计。但是,现在仍然有一个问题存在:若以0为系数的项是首项则显示含有此项,但是运算后则自动消除此项,这样是正确的。但是当其不是首项的时候,加法函数在显示的时候有0为系数的项时,0前边不显示符号,当然,这样也可以理解成当系数为0时,忽略这一项。这也是本程序中一个不完美的地方。
我在设计减法函数的时候由于考虑不够充分就直接编写程序,走了很多弯路,不得不停下来仔细研究算法,后来发现由于前边的加法函数完全适用于减法,只不过是将二元多项式B的所有项取负再用加法函数即可,可见算法的重要性不低于程序本身。
3、程序的调试中的经验及体会
我在调试过程中,发生了许多小细节上的问题,它们提醒了自己在以后编程的时候要注意细节,即使是一个括号的遗漏或者一个字符的误写都会造成大量的错误,浪费许多时间去寻找并修改,总结的教训就是写程序的时候,一定要仔细、认真、专注。
我还有一个很深的体会就是格式和注释,由于平时不注意格式和注释这方面的要求,导致有的时候在检查和调试的时候很不方便。有的时候甚至刚刚完成一部分的编辑,结果一不注意,就忘记了这一部分程序的功能。修改的时候也有不小心误删的情况出现。如果注意格式风格,并且养成随手加注释的习惯,就能减少这些不必要的反复和波折。还有一点,就是在修改的时候,要注意修改前后的不同点在哪里,改后调试结果要在原有的基础上更加精确。
篇5:多样化算法的优化心得体会
多样化算法的优化心得体会
用比例解决问题已经学习结束,我们的数学之旅已经开到了第三单元的整理和复习,孩子们对用比例解决问题颇有异议。
昨天做练习时,蔺力林(坐在第二排)给同桌说:“范聪艳,你知道我们班同学私下流行语吗?说比例方法写起来繁杂,还不如算术法简单,真是费劲。”我接过话:“用比例方法没有好处吗?你们学会分析数量关系,正确率提高了很多。”
今天第一节课复习基本知识,第四节课我又拾了一节课(体育老师请假),于是我专门给孩子们上了一节数学对比练习课,重点体现算法多样化和合理选择算法。
我先和孩子们交流学习比例的感受,有的同学说数量关系不会写,有的说正反比例分不清楚,有的说题目会做,写数量关系不好。有很大一部分同学说做题出错少了,也知道一些数量关系了。
“对呀,孩子们,你们在用比例解决问题时,基础是分析数量关系,这个环节清楚了,列比例式就简单多了,所以出错的比较少,我们昨天做口算全部正确率也就是40%,但是今天用比例解决问题的三道题全部正确率可以是80%还多呢!可见用比例解决问题是我们解决问题又多的一种好方法,并且为中学的方程学习和物理化学的学习奠定基础。”我先总结孩子们说的话,并用数据来说话。
“我们学习了很多方法了,今天我们就来对比一下比例方法和算术方法的优缺点,看看我们六年的学习你会有多少种解决问题的方法。”我阐述这节课的训练重点,并且在黑板上出示下面的题目。
男生和女生的人数比是5:3,男生有25人,女生有多少人?
学生交流算法,孩子们的想法如下:
1、25÷5×3
2、解:设女生有x人
25:X=5:3
还有不同的比例式:x:25=3:5 25:5=x:3 3:x=5:25
3、25×3/5(女生是男生人数的3/5)
4、25÷5/3(男生是女生的5/3)
5、25×0.6
6、25×60%
7、25÷5/8×3/8
8、25-25×(1―3/5)
得出这么多种算法,并且学生都能讲出理由和数量关系,我让学生对比:你觉得那种方法最好?
学生对比得出:第1种最简单,用比例解最好列式,不出错,其余的算法也不错,但是却需要转换单位“1”,第3、5、6种其实基本思路是一样的。
我出示第二道题目:一辆汽车3小时行120千米,照这样计算,12小时可以行多少千米?
学生先自己在练习本上写算式,能写几种写几种。交流的算法如下:
1、120÷3×12
2、12÷3×120 或120×(12÷3)
3、解:设12小时可以行x千米
x:12=120:3
12:x=3:120 120:x=3:12 x:120=12:3等
4、120÷(3÷12)
5、120×12/3
6、120÷3/12
等等
我让学生继续对比:你觉得那种方法最好?
学生很快对比得出:用比例解最好列式,不出错,只要前项和后项对应好数字,可以列出不同的比例式。
大半节课时间很快过去了,孩子们带着多种算法的喜悦,开始做练习册上的练习题。这大半节课的`对比联系,学生对小数、分数、百分数、比和比例的不同解法有了全面的了解,并会在多种算法中选择最优化的算法,这样训练的目的就达到了。很多学生的思维更清晰,更敏锐,因为有一个大数学观的融会贯通,知识的前后联系性让思维更清晰!
篇6:面试常用算法
1.String/Array/Matrix
在Java中,String是一个包含char数组和其它字段、方法的类。如果没有IDE自动完成代码,下面这个方法大家应该记住:
toCharArray //get char array of a String
Arrays.sort() //sort an array
Arrays.toString(char[] a) //convert to string
charAt(int x) //get a char at the specific index
length() //string length
length //array size
substring(int beginIndex)
substring(int beginIndex, int endIndex)
Integer.valueOf()//string to integer
String.valueOf()/integer to string
String/arrays很容易理解,但与它们有关的问题常常需要高级的算法去解决,例如动态编程、递归等。
下面列出一些需要高级算法才能解决的经典问题:
Evaluate Reverse Polish Notation
Longest Palindromic Substring
单词分割
字梯
Median of Two Sorted Arrays
正则表达式匹配
合并间隔
插入间隔
Two Sum
3Sum
4Sum
3Sum Closest
String to Integer
合并排序数组
Valid Parentheses
实现strStr()
Set Matrix Zeroes
搜索插入位置
Longest Consecutive Sequence
Valid Palindrome
螺旋矩阵
搜索一个二维矩阵
旋转图像
三角形
Distinct Subsequences Total
Maximum Subarray
删除重复的排序数组
删除重复的排序数组2
查找没有重复的最长子串
包含两个独特字符的最长子串
Palindrome Partitioning
2.链表
在Java中实现链表是非常简单的,每个节点都有一个值,然后把它链接到下一个节点。
class Node {
int val;
Node next;
Node(int x) {
val = x;
next = null;
}
}
比较流行的两个链表例子就是栈和队列。
栈(Stack)
class Stack{
Node top;
public Node peek(){
if(top != null){
return top;
}
return null;
}
public Node pop(){
if(top == null){
return null;
}else{
Node temp = new Node(top.val);
top = top.next;
return temp;
}
}
public void push(Node n){
if(n != null){
n.next = top;
top = n;
}
}
}
队列(Queue)
class Queue{
Node first, last;
public void enqueue(Node n){
if(first == null){
first = n;
last = first;
}else{
last.next = n;
last = n;
}
}
public Node dequeue(){
if(first == null){
return null;
}else{
Node temp = new Node(first.val);
first = first.next;
return temp;
}
}
}
值得一提的是,Java标准库中已经包含一个叫做Stack的类,链表也可以作为一个队列使用(add()和remove())。(链表实现队列接口)如果你在面试过程中,需要用到栈或队列解决问题时,你可以直接使用它们。
在实际中,需要用到链表的算法有:
插入两个数字
重新排序列表
链表周期
Copy List with Random Pointer
合并两个有序列表
合并多个排序列表
从排序列表中删除重复的
分区列表
LRU缓存
3.树&堆
这里的树通常是指二叉树。
class TreeNode{
int value;
TreeNode left;
TreeNode right;
}
下面是一些与二叉树有关的概念:
二叉树搜索:对于所有节点,顺序是:left children <= current node <= right children;
平衡vs.非平衡:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树;
满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点;
完美二叉树(Perfect Binary Tree):一个满二叉树,所有叶子都在同一个深度或同一级,并且每个父节点都有两个子节点;
完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
堆(Heap)是一个基于树的数据结构,也可以称为优先队列( PriorityQueue),在队列中,调度程序反复提取队列中第一个作业并运行,因而实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。
下面列出一些基于二叉树和堆的算法:
二叉树前序遍历
二叉树中序遍历
二叉树后序遍历
字梯
验证二叉查找树
把二叉树变平放到链表里
二叉树路径和
从前序和后序构建二叉树
把有序数组转换为二叉查找树
把有序列表转为二叉查找树
最小深度二叉树
二叉树最大路径和
平衡二叉树
4.Graph
与Graph相关的问题主要集中在深度优先搜索和宽度优先搜索。深度优先搜索非常简单,你可以从根节点开始循环整个邻居节点。下面是一个非常简单的宽度优先搜索例子,核心是用队列去存储节点。
第一步,定义一个GraphNode
class GraphNode{
int val;
GraphNode next;
GraphNode[] neighbors;
boolean visited;
GraphNode(int x) {
val = x;
}
GraphNode(int x, GraphNode[] n){
val = x;
neighbors = n;
}
public String toString(){
return “value: ”+ this.val;
}
}
第二步,定义一个队列
class Queue{
GraphNode first, last;
public void enqueue(GraphNode n){
if(first == null){
first = n;
last = first;
}else{
last.next = n;
last = n;
}
}
public GraphNode dequeue(){
if(first == null){
return null;
}else{
GraphNode temp = new GraphNode(first.val, first.neighbors);
first = first.next;
return temp;
}
}
}
第三步,使用队列进行宽度优先搜索
public class GraphTest {
public static void main(String[] args) {
GraphNode n1 = new GraphNode(1);
GraphNode n2 = new GraphNode(2);
GraphNode n3 = new GraphNode(3);
GraphNode n4 = new GraphNode(4);
GraphNode n5 = new GraphNode(5);
n1.neighbors = new GraphNode[]{n2,n3,n5};
n2.neighbors = new GraphNode[]{n1,n4};
n3.neighbors = new GraphNode[]{n1,n4,n5};
n4.neighbors = new GraphNode[]{n2,n3,n5};
n5.neighbors = new GraphNode[]{n1,n3,n4};
breathFirstSearch(n1, 5);
}
public static void breathFirstSearch(GraphNode root, int x){
if(root.val == x)
System.out.println(“find in root”);
Queue queue = new Queue();
root.visited = true;
queue.enqueue(root);
while(queue.first != null){
GraphNode c = (GraphNode) queue.dequeue();
for(GraphNode n: c.neighbors){
if(!n.visited){
System.out.print(n + “ ”);
n.visited = true;
if(n.val == x)
System.out.println(“Find ”+n);
queue.enqueue(n);
}
}
}
}
}
输出结果:
value: 2 value: 3 value: 5 Find value: 5
value: 4
实际中,基于Graph需要经常用到的算法:
克隆Graph
5.排序
不同排序算法的时间复杂度,大家可以到wiki上查看它们的基本思想。
BinSort、Radix Sort和CountSort使用了不同的假设,所有,它们不是一般的排序方法。
下面是这些算法的具体实例,另外,你还可以阅读: Java开发者在实际操作中是如何排序的。
归并排序
快速排序
插入排序
6.递归和迭代
下面通过一个例子来说明什么是递归。
问题:
这里有n个台阶,每次能爬1或2节,请问有多少种爬法?
步骤1:查找n和n-1之间的关系
为了获得n,这里有两种方法:一个是从第一节台阶到n-1或者从2到n-2。如果f(n)种爬法刚好是爬到n节,那么f(n)=f(n-1)+f(n-2)。
步骤2:确保开始条件是正确的
f(0) = 0;
f(1) = 1;
public static int f(int n){
if(n <= 2) return n;
int x = f(n-1) + f(n-2);
return x;
}
递归方法的时间复杂度指数为n,这里会有很多冗余计算。
f(5)
f(4) + f(3)
f(3) + f(2) + f(2) + f(1)
f(2) + f(1) + f(2) + f(2) + f(1)
该递归可以很简单地转换为迭代。
public static int f(int n) {
if (n <= 2){
return n;
}
int first = 1, second = 2;
int third = 0;
for (int i = 3; i <= n; i++) {
third = first + second;
first = second;
second = third;
}
return third;
}
在这个例子中,迭代花费的时间要少些。关于迭代和递归,你可以去 这里看看。
7.动态规划
动态规划主要用来解决如下技术问题:
通过较小的子例来解决一个实例;
对于一个较小的实例,可能需要许多个解决方案;
把较小实例的解决方案存储在一个表中,一旦遇上,就很容易解决;
附加空间用来节省时间。
上面所列的爬台阶问题完全符合这四个属性,因此,可以使用动态规划来解决:
public static int[] A = new int[100];
public static int f3(int n) {
if (n <= 2)
A[n]= n;
if(A[n] >0)
return A[n];
else
A[n] = f3(n-1) + f3(n-2);//store results so only calculate once!
return A[n];
}
一些基于动态规划的算法:
编辑距离
最长回文子串
单词分割
最大的子数组
8.位操作
位操作符:
从一个给定的数n中找位i(i从0开始,然后向右开始)
public static boolean getBit(int num, int i){
int result = num & (1<
if(result == 0){
return false;
}else{
return true;
}
}
例如,获取10的第二位:
i=1, n=10
1<<1= 10
1010&10=10
10 is not 0, so return true;
典型的位算法:
Find Single Number
Maximum Binary Gap
9.概率
通常要解决概率相关问题,都需要很好地格式化问题,下面提供一个简单的例子:
有50个人在一个房间,那么有两个人是同一天生日的可能性有多大?(忽略闰年,即一年有365天)
算法:
public static double caculateProbability(int n){
double x = 1;
for(int i=0; i
x *= (365.0-i)/365.0;
}
double pro = Math.round((1-x) * 100);
return pro/100;
}
结果:
calculateProbability(50) = 0.97
10.组合和排列
组合和排列的主要差别在于顺序是否重要。
例1:
1、2、3、4、5这5个数字,输出不同的顺序,其中4不可以排在第三位,3和5不能相邻,请问有多少种组合?
例2:
有5个香蕉、4个梨、3个苹果,假设每种水果都是一样的,请问有多少种不同的组合?
[面试常用算法]
篇7:养老金算法
2016最新养老金算法
时值年末,又快到了明年初集体涨养老金的时候,公众对于养老金问题的关注度也不断水涨船高。虽然大家都知道养老金是人社部门经过一系列公式为退休人员算出来的,但多年来,相关公式和算法罕见于公开报道,使其成了“公开的秘密”。
养老金知多少
领取基本养老金有何条件?
累计缴满允许有中断
基本养老金是根据个人累计缴费年限、缴费工资、当地职工平均工资、个人账户金额、城镇人口平均预期寿命等因素确定的。
领取基本养老金包括两大必要条件。首先,参加基本养老保险的个人必须达到法定退休年龄,其次是累计缴纳养老保险费时限需满15年。这样才可以按月领取基本养老金。
需要提醒的是,我国目前法定的职工退休年龄规定是男性年满60周岁,女工人年满50周岁,女干部年满55周岁。从事特殊工种工作的,退休年龄为男性年满55周岁、女性年满45周岁;而经本市劳动鉴定委员会确认完全丧失劳动能力的职工,则可办理病退手续。
此外,15年是累计缴纳养老保险费的时限,中间允许有中断,不用非得连续缴费15年。
养老金数额由哪些因素决定?
年限越长缴费越高金额越多
职工的基本养老金主要包括基础养老金和个人账户养老金两部分。另外对于6月30日以前参加工作,1月1日以后符合按月领取基本养老金条件的被保险人,除按月领取基础养老金和个人账户养老金外,还要额外再发给过渡性养老金。
缴费年限越长,基础养老金和过渡性养老金的计发比例就越大;缴费水平越高,实际缴费指数就相应增高,计算基础养老金和过渡性养老金的结果也就更高,这也体现了我国养老保险“多缴多得”的原则。
同一自然年度内,本市职工平均工资是不变的,那么影响基本养老金水平的因素便是个人缴费基数和缴费年限。按同一缴费基数缴纳和补缴的养老保险在计算基本养老金时并无区别。所以,养老保险间断后又补缴的,不会影响基本养老金的计算。
职工退休金如何计算
1、基础养老金月标准,以当地上年度在岗职工月平均工资,和本人指数化月平均缴费工资的平均值为基数,缴费每满1年发给1%。
计算公式为:基础养老金=(参保人员退 休时当地上年度在岗职工月平均工资+本人指数化月平均缴费工资)&pide;2×缴费年限×1%
2、个人账户养老金月标准为个人账户储存额除以计发月数。
计算公式为:个人账户养老金=参保人员退休时个人账户累计储存额&pide;计发月数
3、过渡性养老金月标准以本人指数化月平均缴费工资为基数,“统账结合”前的缴费年限每满1年发给1.2%。
计算公式为:过渡性养老金=本人指数化月平均缴费工资×统账结合前的缴费年限×1.2%
4、过渡性调节金以当地现行标准为基数,20至退休的按一定比例计发。2015年及以后退休的,不再发给过渡性调节金。
5、本人指数化月平均缴费工资=参保人员退休时全省上年在岗职工月平均工资×本人平均缴费工资指数。本人平均缴费工资指数=(a1/A1+a2/A2+……+an-1/An-1+an/An)&pide;N。公式中:a1、a2……an-1、an为参保人员1992年至退休上一年各年的缴费工资;A1、A2……An-1、An为1992年至参保人员退休上一年各年的全省职工年平均工资(起为全省在岗职工年平均工资);N为参保人员1992年1月1日至退休上一年年底的实际缴费年限与视同缴费年限合计数。其中:对每年1月至6月退休的人员,An、An-1均取该年上上年全省在岗职工年平均工资;对每年7月至12月退休的人员,An取该年上年全省在岗职工年平均工资。对7月1日后缴纳的1月1日后基本养老保险费,缴费基数应按到账时间合并计算后,用于到账年度缴费工资指数的计算。其中,退休当年补缴以前年度基本养老保险费并到账的,退休上一年年底前的补缴基数与退休上一年的缴费基数合并计算后,用于退休上一年缴费工资指数的计算。对1992年1月1日至退休上一年年底的实际缴费年限与视同缴费年限合计数小于4年的参保人员,其平均缴费工资指数不得超过1.0,即:计算结果大于或等于1.0的,其平均缴费工资指数按1.0确定;小于1.0的,按实确定。
篇8:数学算法
数学算法
1、速算一:快心算速算一:快心算---真正与小学数学教材同步的教学模式快心算是目前唯一不借助任何实物进行简便运算的方法,既不用练算盘,也不用扳手指,更不用算盘。
快心算教材的编排和难度是紧扣小学数学大纲并于初中代数接轨,比小学课本更简便的一门速算。简化了笔算,加强了口算。简单,易学,趣味性强,小学生通过短时间培训后,多位数加,减,乘,除,不列竖式,直接可以写出答数。
快心算的奇特效果
三年级以上任意多位数的乘除加减全部学完.
二年级多位数的加减,两位数的乘法和一位数的除法.
一年级,多位数的加减.
幼儿园中,大班学会多位数加减法为学龄前幼儿量身定做的,提前渡过小学口算这一关。小孩在幼儿园学习快心算对以后上小学有帮助
孩子们做作业不再用草稿纸,看算直接写答案.
快心算“有别于”珠心算“”手脑算“。西安教师牛宏伟发明的快心算,(牛宏伟老师获得中华人民共和国国家知识产权局颁发的专利证书。专利号;ZL 2008301174275.受中华人民共和国专利法的专利保护。)主要是通过教材中的一定规则,对幼儿进行加减乘除快速运算训练。”快心算“有助于提高孩子思维和行为的条理性、逻辑性以及灵敏性,锻炼孩子眼、手、脑的同步快速反应,计算方法和中小学数学具有一致性,所以很受幼儿家长的欢迎。
快心算真正与小学数学教材同步的教学模式:
1:会算法--笔算训练,现今我国的教育体制是应试教育,检验学生的标准是考试成绩单,那么学生的主要任务就是应试,答题,答题要用笔写,笔算训练是教学的主线。与小学数学计算方法一致,不运用任何实物计算,无论横式,竖式,连加连减都可运用自如,用笔做计算是启动智慧快车的一把金钥匙。
2:明算理-算理拼玩。会用笔写题,不但要使孩子会算法,还要让孩子明白算理。使孩子在拼玩中理解计算的算理,突破数的计算。孩子是在理解的基础上完成的计算。
3:练速度--速度训练,会用笔算题还远远不够,小学的口算要有时间限定,是否达标要用时间说话,也就是会算题还不够,主要还是要提速。
4:启智慧--智力体操,不单纯地学习计算,着重培养孩子的数学思维能力,全面激发左右脑潜能,开发全脑。经过快心算的训练,学前孩子可以深刻的理解数学的本质(包含),数的意义(基数,序数,和包含),数的运算机理(同数位的数的加减,)数学逻辑运算的方式,使孩子掌握处理复杂信息分解方法,发散思维,逆向思维得到了发展。孩子得到一个反应敏锐的大脑。
2、速算二:袖里吞金速算二:央视热播剧《走西口》里豆花多次夸田青会”袖里吞金“速算。(就是计算不借助算盘)!那究竟什么是袖里吞金速算法?
袖里吞金就是一种速算的方法,是我国古代商人发明的一种数值计算方法,古代人的衣服袖子肥大,计算时只见两手在袖中进行,固叫袖里吞金速算。这种计算方法过去曾有一段歌谣流传;”袖里吞金妙如仙,灵指一动数目全,无价之宝学到手,不遇知音不与传“。
袖里吞金速算法就是一种民间的手心算的方法,中国的商贾数学,晋商一面走路一面算账,十个手指就是一把算盘,所以山西人平时总将一双手吞在袖里,怕泄露了他的经济秘密。过去人们为了谋生不会轻易将这种算法的秘笈外传,一种在中华大地上流传了至少400多年名叫”袖里吞金“的.速算方式也濒临失传。
根据有关资料显示,公元1573年,一位名叫徐心鲁的学者,写了一本《珠盘算法》,最早描述了袖里吞金速算;公元1592年,一位名叫程大位的数学家,出版了一本《算法统筹》,首次对袖里吞金进行了详细描述。后来商人尤其是晋商,推广使用了这门古代的速算方法。”袖里吞金“算法是山西票号秘不外传的一门绝技,西安的一些大商家大掌柜的都会这种速算法。
袖里吞金速算表示数的方法是以左手五指设点作为数码盘,每个手指表示一位数,五个手指可表示个、十、百、千、万五位数字。每个手指的上、中、下三节分别表示1-9个数。每节上布置着三个数码,排列的规则是分左、中、右三列,手指左边逆上(从下到上)排列1、2、3:手指中间顺下(从上到下)排列4、5、6:手指右边逆上排列7、8、9。袖里吞金的计算方法是采用心算办法利用大脑形象再现指算计算过程而求出结果的方法。它把左手当作一架五档的虚算盘,用右手五指点按这个虚算盘来进行计算。记数时要用右手的手指点左手相对应的手指。其明确分工是:右手拇指/专点左手拇指,右手食指专点左手食指,右手中指专点左手中指,右手无名指专点左手无名指,右手小指专点左手小指。对应专业分工各不相扰。哪个手指点按数,哪个手指就伸开,手指不点按数时弯屈,表示0。它不借助于任何计算工具,不列运算程序,只需两手轻轻一合,便知答数,可进行十万位以内的任意数的加减乘除四则运算。
袖里吞金'速算,其运算速度(当然要经过一定时间的练习),加减可与电子计算机相媲美,乘除比珠算要快,平方、开平方比笔算快得多。虽然对于初学者来说,用'袖里吞金'计算简单的数据不如计算器快,但熟练掌握这项技能后,计算速度要超过计算器。曾经有人专门计算过'袖里吞金'算法的速度,一个熟练掌握这门技能的人,得数结果为3到4位数的乘法,大约为2秒钟的时间;结果为5到7位数的,约为7秒钟左右;
袖里吞金速算法虽然脱胎于珠算,但与珠算相比,不需要任何的工具,只要使用一双手就可以了。由于”袖里吞金“不用工具、不用眼看等特点,非常适合在野外作业时使用,在黑暗中也可以使用,尤其是对于盲人,更可以通过这种算法来解决一些问题。”俗话说'十指连心',运用手指来训练计算技能,可以活动筋骨,心灵手巧,手巧促心灵,提高脑力。“
现如今,商人们不用袖里吞金速算法算账了。但是,一些教育工作者,已将这种方法应运于儿童早教领域。西安牛宏伟老师从事教育工作多年,曾对袖里吞金进行改进。使其更简单易学,方便快捷。先后教过几千名儿童学习改进型”袖里吞金“。它在启发儿童智力方面,有着良好效果。袖里吞金--开发孩子的全脑。袖里吞金不是特异功能,而是一种科学的教学方法。它比珠心算还神奇,利用手脑并用来完成加减乘除的快速计算,速度惊人,准确率高。它有效地开发了学生的大脑,激发了学生的潜能。革新袖里吞金速算--全脑手心算---已于5月6日由牛宏伟老师获得中华人民共和国国家知识产权局颁发的专利证书。专利号;ZL 2008301164377.。受中华人民共和国专利法的专利保护。
袖里吞金速算法减少笔算列算式复杂的运算过程,省时省力,提高学生计算速度。能算十万位以内任意数的加减乘除四则算。通过手脑并用来快速完成加减乘除计算,准确率高。经过两三个月的学习,像64983+68496、78×63这样的计算,低年级小朋友们两手一合,答案便能脱口而出。
革新袖里吞金速算法---全脑手心算则是儿童用记在手,算在脑的方法,不用任何计算工具,不列竖式,两手一合,便知答案。这种方法是:将左手的骨节横纹模拟算盘上的算珠档位来计数,把左手作为一架”五档小算盘“用右手来拔珠计算,从而使人的双手成为一个完美的计算器。学生在计算过程中可以运算出十万位的结果,通俗易懂,简单易学,真正达到训练孩子的脑,心,手,提高孩子的运算能力,记忆力和自信心。
3、速算三:蒙氏速算速算三:蒙氏速算是在蒙氏数学基础上的发展与创新,蒙氏数学相对低幼一点,而”蒙氏速算“是针对学前班孩子的,最大优势就是幼小衔接好,与小学数学计算方法一致。适合幼儿园中班大班小朋友及小学一二年级学生学习。
蒙氏速算能使幼儿在拼玩中,深刻理解数字计算的根本原理。从而轻松突破孩子的数学计算关,数字的计算蕴藏着包含,分类,分解合并,归纳,对称逻辑推理等抽象思维,而学前孩子只会图象思维,不会理解和推理,所以学前孩子学习计算是非常困难的。蒙氏速算卡的诞生使数学计算的原理也能以图象的形式显示在孩子面前。孩子理解了算理了,自然计算也就简单了。5和6两个数一拼,不仅答案显示出来,而且还能显示为什么要进位,这就是西安牛宏伟老师最新的发明专利,蒙氏速算(专利号:ZL 2008301164396),它的一张卡片就包含着数字的写法,数的形状,数的量(基数)和数的包含4个信息。从而轻松带领孩子进入有趣的数字王国。
蒙氏速算--算理简捷,与国家九年义务教育课程标准完全接轨,使4.5岁儿童在一个学期内,可学会万以内加减法的运算.蒙氏速算从最基本的数概念入手一环扣一环,与小学数学计算方法一致。但教学方法简单,学生易学,易接受。蒙氏速算轻松快乐的教学,利用卡通,实物等数字形象,把抽象枯燥的数学概念形象化,把复杂的问题简单化。蒙氏速算是幼小衔接最佳数学课程,提高少儿数学素质的新方法。
4、速算四:特殊数的速算速算四:有条件的特殊数的速算
两位数乘法速算技巧
原理:设两位数分别为10A+B,10C+D,其积为S,根据多项式展开:
S=(10A+B)×(10C+D)=10A×10C+B×10C+10A×D+B×D,而所谓速算,就是根据其中一些相等或互补(相加为十)的关系简化上式,从而快速得出结果。
注:下文中”--“代表十位和个位,因为两位数的十位相乘得数的后面是两个零,请大家不要忘了,前积就是前两位,后积是后两位,中积为中间两位,满十前一,不足补零.
A.乘法速算
一.前数相同的:
1.1.十位是1,个位互补,即A=C=1,B+D=10,S=(10+B+D)×10+A×B
方法:百位为二,个位相乘,得数为后积,满十前一。
例:13×17 13+7=2--(”-“在不熟练的时候作为助记符,熟练后就可以不使用了)
3×7=21
---
221
即13×17=221 1.2.十位是1,个位不互补,即A=C=1,B+D≠10,S=(10+B+D)×10+A×B
方法:乘数的个位与被乘数相加,得数为前积,两数的个位相乘,得数为后积,满十前一。
例:15×17 15+7=22-(”-“在不熟练的时候作为助记符,熟练后就可以不使用了)
5×7=35
---
255
即15×17=255 1.3.十位相同,个位互补,即A=C,B+D=10,S=A×(A+1)×10+A×B
方法:十位数加1,得出的和与十位数相乘,得数为前积,个位数相乘,得数为后积
例:56×54
(5+1)×5=30--
6×4=24
--
3024 1.4.十位相同,个位不互补,即A=C,B+D≠10,S=A×(A+1)×10+A×B
方法:先头加一再乘头两,得数为前积,尾乘尾,的数为后积,乘数相加,看比十大几或小几,大几就加几个乘数的头乘十,反之亦然
例:67×64
(6+1)×6=42 7×4=28 7+4=11 11-10=1 4228+60=4288
--
4288
方法2:两首位相乘(即求首位的平方),得数作为前积,两尾数的和与首位相乘,得数作为中积,满十进一,两尾数相乘,得数作为后积。
例:67×64 6×6=36--
(4+7)×6=66-
4×7=28
--
4288
二、后数相同的:
2.1.个位是1,十位互补即B=D=1,A+C=10 S=10A×10C+101
方法:十位与十位相乘,得数为前积,加上101.。
--8×2=16--
101
---
1701 2.2.不是很简便个位是1,十位不互补即B=D=1,A+C≠10 S=10A×10C+10C+10A+1
方法:十位数乘积,加上十位数之和为前积,个位为1.。
例:71×91 70×90=63--
70+90=16-
1
--
6461 2.3个位是5,十位互补即B=D=5,A+C=10 S=10A×10C+25
方法:十位数乘积,加上十位数之和为前积,加上25。
例:35×75 3×7+5=26--
25
--
2625 2.4不是很简便个位是5,十位不互补即B=D=5,A+C≠10 S=10A×10C+525
方法:两首位相乘(即求首位的平方),得数作为前积,两十位数的和与个位相乘,得数作为中积,满十进一,两尾数相乘,得数作为后积。
例:75×95 7×9=63--
(7+9)×5=80-
25
--
7125 2.5.个位相同,十位互补即B=D,A+C=10 S=10A×10C+B100+B2
方法:十位与十位相乘加上个位,得数为前积,加上个位平方。
例:86×26 8×2+6=22--
36
---
2236 2.6.个位相同,十位非互补
方法:十位与十位相乘加上个位,得数为前积,加上个位平方,再看看十位相加比10大几或小几,大几就加几个个位乘十,小几反之亦然
例:73×43 7×4+3=31 9
7+4=11 3109+30=3139
---
3139 2.7.个位相同,十位非互补速算法2
方法:头乘头,尾平方,再加上头加尾的结果乘尾再乘10
例:73×43 7×4=28 9
2809+(7+4)×3×10=2809+11×30=2809+330=3139
---
3139
三、特殊类型的:
3.1、一因数数首尾相同,一因数十位与个位互补的两位数相乘。
方法:互补的那个数首位加1,得出的和与被乘数首位相乘,得数为前积,两尾数相乘,得数为后积,没有十位用0补。
例:66×37
(3+1)×6=24--
6×7=42
--
2442 3.2、一因数数首尾相同,一因数十位与个位非互补的两位数相乘。
方法:杂乱的那个数首位加1,得出的和与被乘数首位相乘,得数为前积,两尾数相乘,得数为后积,没有十位用0补,再看看非互补的因数相加比10大几或小几,大几就加几个相同数的数字乘十,反之亦然
例:38×44
(3+1)*4=12 8*4=32 1632 3+8=11 11-10=1 1632+40=1672
--
1672 3.3、一因数数首尾互补,一因数十位与个位不相同的两位数相乘。
方法:乘数首位加1,得出的和与被乘数首位相乘,得数为前积,两尾数相乘,得数为后积,没有十位用0补,再看看不相同的因数尾比头大几或小几,大几就加几个互补数的头乘十,反之亦然
例:46×75
(4+1)*7=35 6*5=30 5-7=-2 2*4=8 3530-80=3450
--
3450 3.4、一因数数首比尾小一,一因数十位与个位相加等于9的两位数相乘。
方法:凑9的数首位加1乘以首数的补数,得数为前积,首比尾小一的数的尾数的补数乘以凑9的数首位加1为后积,没有十位用0补。
例:56×36 10-6=4 3+1=4 5*4=20 4*4=16
---
2016 3.5、两因数数首不同,尾互补的两位数相乘。
方法:确定乘数与被乘数,反之亦然。被乘数头加一与乘数头相乘,得数为前积,尾乘尾,得数为后积。再看看被乘数的头比乘数的头大几或小几,大几就加几个乘数的尾乘十,反之亦然
例:74×56
(7+1)*5=40 4*6=24 7-5=2 2*6=12 12*10=120 4024+120=4144
---
4144 3.6、两因数首尾差一,尾数互补的算法
方法:不用向第五个那么麻烦了,取大的头平方减一,得数为前积,大数的尾平方的补整百数为后积
例:24×36 32 3*3-1=8 6^2=36 100-36=64
---
864 3.7、近100的两位数算法
方法:确定乘数与被乘数,反之亦然。再用被乘数减去乘数补数,得数为前积,再把两数补数相乘,得数为后积(未满10补零,满百进一)
例:93×91 100-91=9 93-9=84 100-93=7 7*9=63
---
8463 B、平方速算
一、求11~19的平方
同上1.2,乘数的个位与被乘数相加,得数为前积,两数的个位相乘,得数为后积,满十前一
例:17×17 17+7=24-
7×7=49
---
289
三、个位是5的两位数的平方
同上1.3,十位加1乘以十位,在得数的后面接上25。
例:35×35
(3+1)×3=12--
25
--
1225
四、十位是5的两位数的平方
同上2.5,个位加25,在得数的后面接上个位平方。
例:53×53 25+3=28--
3×3=9
--
2809
四、21~50的两位数的平方
求25~50之间的两数的平方时,记住1~25的平方就简单了,11~19参照第一条,下面四个数据要牢记:
21×21=441 22×22=484 23×23=529 24×24=576
求25~50的两位数的平方,用底数减去25,得数为前积,50减去底数所得的差的平方作为后积,满百进1,没有十位补0。
例:37×37 37-25=12--
(50-37)^2=169
--
1369 C、加减法
一、补数的概念与应用
补数的概念:补数是指从10、100、1000…中减去某一数后所剩下的数。
例如10减去9等于1,因此9的补数是1,反过来,1的补数是9。
补数的应用:在速算方法中将很常用到补数。例如求两个接近100的数的乘法或除数,将看起来复杂的减法运算转为简单的加法运算等等。
D、除法速算
一、某数除以5、25、125时
1、被除数÷5
=被除数÷(10÷2)
=被除数÷10×2
=被除数×2÷10 2、被除数÷25
=被除数×4÷100
=被除数×2×2÷100 3、被除数÷125
=被除数×8÷1000
=被除数×2×2×2÷1000
在加、减、乘、除四则运算中除法是最麻烦的一项,即使使用速算法很多时候也要加上笔算才能更快更准地算出答案。因本人水平所限,上面的算法不一定是最好的心算法
[编辑本段]
5、速算五:史丰收速算速算五:史丰收速算
由速算大师史丰收经过钻研发明的快速计算法,是直接凭大脑进行运算的方法,又称为快速心算、快速脑算。这套方法打破人类几千年从低位算起的传统方法,运用进位规律,总结26句口诀,由高位算起,再配合指算,加快计算速度,能瞬间运算出正确结果,协助人类开发脑力,加强思维、分析、判断和解决问题的能力,是当代应用数学的一大创举。
这一套计算法,1990年由国家正式命名为”史丰收速算法“,现已编入中国九年制义务教育《现代小学数学》课本。联合国教科文组织誉之为教育科学史上的奇迹,应向全世界推广。
史丰收速算法的主要特点如下:
⊙从高位算起,由左至右
⊙不用计算工具
⊙不列计算程序
⊙看见算式直接报出正确答案
⊙可以运用在多位数据的加减乘除以及乘方、开方、三角函数、对数等数学运算上
速算法演练实例
Example of Rapid Calculation in Practice
○史丰收速算法易学易用,算法是从高位数算起,记着史教授总结了的26句口诀(这些口诀不需死背,而是合乎科学规律,相互连系),用来表示一位数乘多位数的进位规律,掌握了这些口诀和一些具体法则,就能快速进行加、减、乘、除、乘方、开方、分数、函数、对数…等运算。
□本文针对乘法举例说明
○速算法和传统乘法一样,均需逐位地处理乘数的每位数字,我们把被乘数中正在处理的那个数位称为「本位」,而从本位右侧第一位到最末位所表示的数称「后位数」。本位被乘以后,只取乘积的个位数,此即「本个」,而本位的后位数与乘数相乘后要进位的数就是「后进」。
○乘积的每位数是由「本个加后进」和的个位数即--
□本位积=(本个十后进)之和的个位数
○那么我们演算时要由左而右地逐位求本个与后进,然后相加再取其个位数。现在,就以右例具体说明演算时的思维活动。
(例题)被乘数首位前补0,列出算式:
7536×2=15072
乘数为2的进位规律是「2满5进1」
7×2本个4,后位5,满5进1,4+1得5 5×2本个0,后位3不进,得0 3×2本个6,后位6,满5进1,6+1得7 6×2本个2,无后位,得2
在此我们只举最简单的例子供读者参考,至于乘3、4…至乘9也均有一定的进位规律,限于篇幅,在此未能一一罗列。
「史丰收速算法」即以这些进位规律为基础,逐步发展而成,只要运用熟练,举凡加减乘除四则多位数运算,均可达到快速准确的目的。
演练实例二
□掌握诀窍人脑胜电脑
史丰收速算法并不复杂,比传统计算法更易学、更快速、更准确,史丰收教授说一般人只要用心学习一个月,即可掌握窍门。
速算法对于会计师、经贸人员、科学家们而言,可以提高计算速度,增加工作效益;对学童而言、可以开发智力、活用头脑、帮助数理能力的增强。
篇9:免疫算法
免疫算法
摘要:本文在分析标准遗传算法的优越性与存在不足的基础上,借鉴生命科学中免疫的概念与理论,提出了一种新的.算法--免疫算法.该算法的核心在于免疫算子的构造,而免疫算子又是通过接种疫苗和免疫选择两个步骤来完成的.理论证明免疫算法是收敛的,并结合TSP问题,提出了免疫疫苗的选取与免疫算子的构造方法.最后,用免疫算法对75城市的TSP问题进行了仿真计算,并将其计算过程与标准遗传算法进行了对比,结果表明该算法对减轻遗传算法后期的波动现象具有明显的效果,同时使收敛的速度有较大的提高. 作者: 王磊潘进焦李成 Author: WANG Lei PAN Jin JIAO Li-cheng 作者单位: 西安电子科技大学雷达信号处理国家重点实验室,西安,710071 期 刊: 电子学报 ISTICEIPKU Journal: ACTA ELECTRONICA SINICA 年,卷(期): 2000, 28(7) 分类号: O224 关键词: 免疫算法 抗体 收敛性 TSP问题 机标分类号: TP3 TP1 机标关键词: 免疫算法 标准遗传算法 免疫算子 收敛 生命科学 免疫疫苗 免疫选择 理论证明 接种疫苗 计算过程 构造方法 仿真计算 波动现象 选取 基础 概念 城市 基金项目: 国家自然科学基金,国家高技术研究发展计划(863计划)篇10: 倡算法多样化数学教学心得体会
倡算法多样化数学教学心得体会
《数学课程标准》指出:数学教学活动必须建立在学生认识发展水平和已有知识经验的基础之上。“提倡算法多样化”、“鼓励算法多样化”是《数学课程标准》中关于计算教学改革的一个亮点,它有利于调动学生已有的计算经验,探寻不同的算法,使“不同的人在数学上得到不同的发展”。但是,在课堂教学的实践中,到底应该如何体现算法多样化的教学呢?下面是我在教学中的几点体会:
1、为学生创设算法多样化的机会。
给学生提供的学习内容应该是能够紧密联系他们生活实际,发生在他们身边的现象或问题。而且这些现象与问题中含有数学价值,学生能从中发现客观规律、积累数学活动经验。教科书在编写时作了许多努力,教师的任务是把教科书中的学习材料用生动、有趣的方式呈现给学生。我们可以从三个方面来考虑,一是学生感不感兴趣、想不想学习、愿不愿探究;二是学生有没有回忆起相关的旧知识和已有的经验与方法;三是学生是不是有了初步的解决方法与打算。
例如:有这样一道题:5×25×8要求用简便方法计算,学生的方法很多,(1)先算 5×25=125再算125×8=1000(2)把8拆成2×4,先算5×2=10、25×4=100,再算10×100=1000(3)先算25×8=200再算200×5=1000(4)先算5×8=40再算40×25=1000这样的题目为学生提供了广阔的思维空间,有效的调动了学生思维的积极性,为算法多样化创造了机会。
2、为学生提供算法多样化的平台。
不同的算法展示了学生的不同认知方式。面对问题,教师应该不是告诉他们可以(应该)怎样算,而是应让学生进行自主探索,以“做”而非“听或看”的方式介入学习活动。在这样的活动中,学生不仅能理解所学的知识,掌握正确的算法,而且提高了自己从事数学活动的能力,增强了学习数学的信心,促进自身的整体发展。
学生在解决问题的'时候总是会有一些自己的独特的想法,我们应该让他们按照自己的设想去试一试,用自己的策略去尝试解决。教师只要注意:一是留给学生比较充裕的时间,保障每一名学生都有独立探索的机会;二是鼓励学生勇于克服困难,尽力寻找问题的答案;三是在学生遇到困难是及时给予合理化的建议。
3、让学生在交流中提升算法多样化的品位。
学生通过自己的实践活动得到了问题的答案,找到了解决问题的方法,这就为交流创造条件,他们既有交流的愿望,也有交流的内容。教师要引导全体学生都参与交流,交流的组织形式应是灵活多样的。同桌学生之间或学习小组内部的交流频率高、机会多、参与面广,可以在此基础上再组织班集体的交流,展示不同的计算方法,让每个学生都发表自己的不同观点,倾听别人的想法,有利于学生感受解决问题策略的多样性与灵活性,从中受到启发,学会理解他人,欣赏他人。
4、让学生在自主探究中升华算法多样化的内涵。
学生通过自己动手实践,自主探索找到的解决方法只要是正确的,就都是好方法,要允许学生用自己的方法解决问题。这些方法是学生的创造,是他们的学习成果,其中既包含着数学知识,还包含了宝贵的精神和态度。
教师应“允许学生以他们喜欢的方式学习数学”。如果把学生自已喜欢的算法看做“基本算法”的话,每个人心中的基本方法是不同的,在不同的阶段,基本方法也在发生变化。因此教师要让学生自已选择“基本算法”,并应予以肯定和鼓励。但是强调个体的“基本算法”并非到此为止,还需引导探索、“多中选优”。
总之,算法多样化是数学课程标准中的一个重要思想,是指尊重学生的独立思考,鼓励学生探索不同的方法,它打破了原来的教学模式(教师教给方法,学生尝试,练习巩固提高),使数学教学更符合学生的实际,使每个学生“学到自己需要的数学”。教学中,教师应适时地引导学生选择适合于自己的方法达到算法最优化。在算法多样化到算法最优化的过程中,学生学到的不仅是解题的方法,更在算法多样的过程中彰显了自己的个性,在数学上获得了不同的发展。
篇11:磁盘调度算法
磁盘表面覆盖着磁性物质,信息记录在磁表面上,固定头磁盘的每个磁道单独有一个磁头,这样就能使得计算机可以很快地从一个磁道转换到另一个磁道。但是这需要大量的头,设备成本很高。更通用的方式是每个盘面只有一个头,让它从一道移向另一道。这种动头设备需要硬件设备移动头。
磁盘一般用于文件存储,设计原则是:成本低、容量大、速度高。扩大存储容量:a.增加每英寸磁道数目; b. 双面记录。
存取盘块中的信息一般要有三部分时间:系统首先要把磁头移到相应的道上或柱面上,这个时间叫做寻道时间;一旦磁头到达指定磁道,必须等待所需要的扇区转到读/写头下,这个延迟时间叫做旋转延迟时间;最后,信息实际在磁盘和内存之间进行传送也要花费时间,这部分时间叫做传送时间。一次磁盘服务的总时间就是这三者之和。
要使磁盘服务尽可能地快,操作系统要提供合适的调度算法,改善磁盘服务的平均时间。
进程需要和磁盘交换信息时必须要操作系统发出系统调用,对磁盘的请求一般要有下述几部分内容:
1. 输入和输出;
2. 磁盘地址(驱动器、柱面、面号、扇区);
3. 内存地址;
4. 传送长度。
篇12:磁盘调度算法
任何调度算法的性能都紧紧的依赖于I/O请求的数量和类型,对于磁盘负荷很重的系统来说选择电梯算法和C-SCAN算法更为合适。在极个别情况下,若队列中很少有对于一个未完成的请求,那么所有算法实际上都是等效的。研究表明,通常情况下队列中仅有一个请求。这时,FCFS也是很合适的算法。
磁盘服务的请求受文件分配方式的影响很大。读连续文件的程度将产生大量的在盘上挤在一起的请求,磁头的移动有限。而对于串连或索引文件来说,可能涉及在盘上广泛分配的盘块,要靠减少磁头移动来获取较好的磁盘使用效率。
目录和索引块的位置对I/O请求的队列有很重要的影响。如果文件的数据和它的目录项在盘上的位置相距很远,则磁头移动距离很长。如果把目录和索引块放在缓存中,则可明显减少磁头的移动,尤其对读请求更是如此。
以上仅考虑寻道距离对调度算法的影响。但对于现代磁盘,旋转延迟几乎接 均寻道时间。然而操作系统很难通过调度来改善旋转延迟时间,因为逻辑块的物理位置对外并未公布。当然,磁盘制造商通过在控制器硬件中实现调度算法可以缓减这个问题。
篇13:磁盘调度算法
1、先来先服务调度(FCFS)
FCFS 算法是优先为最先到达的请求服务。例如,有如下请求磁盘服务队列,要访问的磁道数分别是:
98,183,37,122,14,124,65,67
排在前面的是先到达的请求,假设磁头目前停留在53磁道上,按照先来先服务的算法,接下来磁头的移动顺序依次是:
53—>98—>183—>37—>122—>14—>124—>65—>67
这个过程总共移动了(98-53)+(183-98)+(183-37)+(122-37)+(122-14)+(124-14)+(124-65)+(67-65)=640个磁道
这种调度法产生的磁头移动服务太大,磁头频繁的大幅度移动,容易产生机械振动和误差,对使用寿命有损害。所以,要设计好的算法来减少磁头移动幅度,减少服务时间,改善磁盘的吞吐量。
2、最短寻道时间优先法(SSTF)
??优先服务接近于磁头当前位置的请求。SSTF从本质上将是SJF(最短作业优先算法)调度的形式。使用SSTF调度算法,上面那个请求队列的执行顺序是:
??53—>65—>67—>37—>14—>98—>122—>124—>183
总共移动了236个磁道,比FCFS的三分之一多一点,明显改善了磁盘服务,
??但是这种算法并不是最优的。例如,若把磁头从53道移动到37道(尽管不是靠的最近的),然后移动到14,接下去是65,67,98,122,124,183,总共移动了208个磁道<236。
??SSTF也可能导致某些请求长期得不到服务(即“饥饿”问题)。如果当前磁头附近总会不断的到来新的请求,那么距离磁头远的请求将会一直等待下去。
3、扫描法(SCAN)
由于请求服务的队列具有动态性质,总会有新的请求到达 ,因此可采用扫描算法。读/写磁头从磁盘的一端出发,向另一端移动,遇到所需的磁道时就进行服务,直至到达磁盘的另一端。在另一端上,磁头移动方向反过来,继续做下面的服务。这样磁头就连续从盘的一端扫到另一端。
根据前面的例子,但要知道磁头移动的方向和它最近的位置。如果磁头向0道方向移动,则先为37道和14道服务。到达0道,磁头移动方向反过来,并移向磁盘的另一端,接下来服务序列分别是65,67,98,122,124,183。
在具体实现算法时,没有必要让磁头总是从磁盘的一端移到另一端。更通常的做法是:磁头仅移到每个方向上最远的请求磁道上,一旦在当前方向上没有进一步的服务请求了,磁头的移动方向就会反过来,继续为下面的请求服务。这种算法也称为“电梯算法”。例如上面的例子,磁头服务了37,14后发现前面没有新的请求了,就不会向前继续移动到0道,立即掉头服务65道……
这种算法会产生的问题是:假定对磁道的请求是均匀分布的,当磁头到达一方最远端并反过方向时,立即落在磁盘后面的请求相对而言很少,因为这些磁道刚刚得到过服务,而在盘的另一端却有较多的请求,其等待的时间也最长。
4、巡回扫描法(C-SCAN)
C-SCAN是SCAN的变种,可使得等待的时间变的均匀。与SCAN的区别是,它移动到一端,方向放过来,但是在返回的过程中不进行服务,就是直接从一端切换到另一段,然后再按照刚才的方向移动,遇到请求的磁道就服务。例如上面的例子,先向0道移动,53–>37–>14,然后反方向,换到另一端,183–>124–>122–>98–>67–>65。
篇14:百度算法面试题
算法1: 1.在字典中查找单词 字典采用27叉树组织,每个节点对应一个字母,查找就是一个字母 一个字母匹配.算法时间就是单词的长度k. 2.纠错算法 情况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示可能 处理方法: (a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议; (b)当前字母拼写错误:当前字母的键盘相邻作为提示;(只是简单的描述,可 以有更多的)根据分析字典特征和用户单词已输入部分选择(a),(b)处理复杂性分析:影响算法的效率主要是字典的实现与纠错处理 (a)字典的实现已有成熟的算法,改进不大,也不会成为瓶颈; (b)纠错策略要简单有效 ,如前述情况,是线性复杂度; (3)改进策略选择最是重要,可以采用统计学习的方法改进。 问题4 寻找热门查询:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录,这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算法的复杂度。 答案: (1)思路:用哈希做 (2)首先逐次读入查询串,算哈希值,保存在内存数组中,同时统计频度(注意值与日志项对应关系)选出前十的频度,取出对应的日志串,简单不过了。哈希的设计是关键。 问题5 集合合并:给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa bbb ccc ddd hhh},{eee fff}, {ggg}(1)请描述你解决这个问题的思路;(2)请给出主要的处理流程,算法,以及算法的复杂度(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。 答案: (1)思路:先将集合按照大小排列后,优先考虑小的集合是否与大的集合有交集。有就合并,如果小集合与所有其他集合都没有交集则独立。独立的集合在下一轮的比较中不用考虑。这样就可以尽量减少字符串的比较次数。当所有集合都独立的时候,就终止。 (2)处理流程:1.将集合按照大小排序,组成集合合并待处理列表2.选择最小的集合,找出与之有交集的集合,如果有,合并之;如果无,则与其它集合是独立集合,从待处理列表 中删除。3.重复直到待处理列表为空 算法2: 1、将集合按照大小从小到大排序,组成待处理的集合列表。 2、取出待处理集合列表中最小的集合,对于集合的每个元素,依次在其他集合中搜索是否有此元素存在: 1>若存在,则将此小集合与大集合合并,并根据大小插入对应的位置 。转3。 2>若不存在,则在该集合中取下一个元素。如果无下一个元素,即所有元素都不存在于其他集合。则表明此集合独立,从待处理集合列表中删除。并加入结果集合列表。转3。 3、如果待处理集合列表不为空,转2。如果待处理集合列表为空,成功退出,则结果集合列表就是最终的输出。算法复杂度分析:假设集合的个数为n,最大的集合元素为m排序的时间复杂度可以达到n*log(n)然后对于元素在其他集合中查找,最坏情况下为(n-1)*m查找一个集合是否与其他集合有交集的最坏情况是m*m*(n-1)合并的时间复杂度不会超过查找集合有交集的最坏情况。所以最终最坏时间复杂度为O(m*m*n*n)需要说明的是:此算法的平均时间复杂度会很低,因为无论是查找还是合并,都是处于最坏情况的概率很小,而且排序后优先用最小集合作为判断是否独立的对象,优先与最大的集合进行比较,这些都最大的回避了最坏情况。3)可能的改进:首先可以实现将每个集合里面的字符串按照字典序进行排列,这样就可以将查找以及合并的效率增高。另外,可能采取恰当的数据结构也可以将查找以及合并等操作的效率得到提高。
更多互联网相关面试题分享:1、腾讯超难面试试题 2、百度Web开发工程师笔试题
3、腾讯公司程序员面试题及答案详解 4、腾讯往届面试试题【汇总】 5、百度技术研发类笔试题 6、阿里前端大神寒冬谈谈面试与面试题 7、2014百度android开发类面试题目 8、最新阿里面试题汇总 9、百度校园招聘数据挖掘工程师面试题集锦
篇15:蚁群算法
蚁群算法
蚁群算法是一种仿生类非线性优化算法,具有并行性、正反馈性和全局极小搜索能力强等特点.蚁群算法的机理是:生物界中的蚂蚁在搜寻食物源时,能在其走过的路径上释放一种蚂蚁特有的分泌物信息素,使得一定范围内的其他蚂蚁能够觉察并影响其行为.当某些路径上走过的蚂蚁越来越多时,留下的这种信息素轨迹也越多,以至信息素强度增大,使后来蚂蚁选择该路径的.概率也越高,从而更增加了该路径的信息素强度.为了将起源于离散网络路径优化的原始蚁群算法思想用于连续函数优化的地球物理反演问题,必须对有关实施细节进行改造和修正,本文基于网格划分策略的连续域蚁群算法实现了连续域大地电磁蚁群算法.通过选择蚂蚁数、信息素挥发系数等参数,利用三层K型模型和四层HA型模型进行数值试验,结果表明,蚁群算法可以稳定收敛,反演结果接近理论模型.
作 者:王书明 刘玉兰 王家映 Wang Shuming Liu Yulan Wang Jiaying 作者单位:王书明,Wang Shuming(中国地质大学,地球物理与空间信息学院,武汉,430074;University,of,Utah,Salt,Lake,City,84112,U.S.A)刘玉兰,Liu Yulan(东方地球物理勘探有限责任公司,涿州,072751)
王家映,Wang Jiaying(中国地质大学,地球物理与空间信息学院,武汉,430074)
刊 名:工程地球物理学报 英文刊名:CHINESE JOURNAL OF ENGINEERING GEOPHYSICS 年,卷(期):2009 6(2) 分类号:P631 关键词:蚁群算法 非线性 反演 地球物理篇16:排序算法(一)
进入找工作倒计时状态了,计划好好复习一下数据结构和相关算法,预计用两天时间把见过的排序算法整理下,首先看一下时间复杂度为O(n2)的算法,
首先参考大话数据结构定义一个链表类:
#include 冒泡排序法: /** *冒泡排序即相邻的两者相互比较,根据需求把较大的或较小的前移或后移 *记住,两两相邻的比较是冒泡排序的特点之一 */void BubbleSort1(SqList* list){//每次遍历时把较大者后移 int length=list->length; while(length>0) { for(int i=0;i 选择排序法: /** *选取排序即每次在未排序队列当中选取一个最小值,然后与第i个值进行交换,直至i为length为止; *当然,也可以选取最大值把到后面,根据需求而定 */void selectSort(SqList* list){ for (int i = 0; i < list->length; ++i) { int min = list->data[i]; int pos = i; for (int j = i+1; j < list->length; ++j) { if (list->data[j] < min) { min = list->data[j]; pos = j; } } if (pos != i) { swap(list->data[i], list->data[pos]); } }} 简单插入排序法: /** *遍历链表,把每个元素插入到正确位置 */void InsertSort1(SqList *list){ for (int i = 1; i < list->length; ++i) { int j = i - 1; for (; j >=0; j--) { if (list->data[i] >list->data[j]) break; } int tmp = list->data[i]; for (int k = i; k >j+1; --k) { list->data[k] = list->data[k - 1]; } list->data[j + 1] = tmp; }}void InsertSort2(SqList *list){ for (int i = 1; i < list->length; ++i) { if (list->data[i] < list->data[i - 1]) { int tmp = list->data[i]; int j = i-1; for (; j >= 0 && list->data[j] >tmp; --j) {//查找的同时,进行后移操作 list->data[j + 1] = list->data[j]; } list->data[j + 1] = tmp; } }} 希尔排序法(简单插入排序的改进): /** *希尔排序是插入排序的一种改进,可以理解为把一个数组分成几个小的数组进行插入排序,再合并使原数组基本有序, *希尔排序一个很关键的步骤是增量的选取,合适的增量能够提高排序效率,但不合适的增量可能会导致程序崩溃或结果错误。 *其次,希尔排序也不是一个稳定的排序算法,因为它是跳跃插入排序的。 *希尔排序只是比前面几种O(n2)的效果稍好,并不会优于后面要提到的快速排序等算法。 */void ShellSort(SqList* list){ int increment = list->length; do{ increment = increment / 3 + 1; for (int i = increment + 1; i < list->length; ++i) { if (list->data[i] < list->data[i - increment]) { int tmp = list->data[i]; int j = i - increment; for (; j >= 0 && list->data[j] >tmp; j -= increment) { list->data[j + increment] = list->data[j]; } list->data[j + increment] = tmp; } } } while (increment >1);}
篇17:子网掩码二进制算法
子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据,
最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
请看以下示例:
运算演示之一:aa
I P 地址 192.168.0.1
子网掩码 255.255.255.0
AND运算
转化为二进制进行运算:
I P 地址 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
运算演示之二:
I P 地址 192.168.0.254
子网掩码 255.255.255.0
AND运算
转化为二进制进行运算:
I P 地址 11000000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
运算演示之三:
I P 地址 192.168.0.4
子网掩码 255.255.255.0
AND运算
转化为二进制进行运算:
I P 地址 11000000.10101000.00000000.00000100
子网掩码 11111111.11111111.11111111.00000000
AND运算
11000000.10101000.00000000.00000000
转化为十进制后为:
192.168.0.0
通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0
所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。我现在单位使用的代理服务器,内部网络就是这样规划的。
也许你又要问,这样的子网掩码究竟有多少了IP地址可以用呢?你可以这样算。
根据上面我们可以看出,局域网内部的ip地址是我们自己规定的(当然和其他的ip地址是一样的),这个是由子网掩码决定的通过对255.255.255.0的分析。可得出:
前三位IP码由分配下来的数字就只能固定为192.168.0 所以就只剩下了最后的一位了,那么显而易见了,ip地址只能有(2的8次方-1),即256-1=255一般末位为0或者是255的都有其特殊的作用。
那么你可能要问了:如果我的子网掩码不是255.255.255.0呢?你也可以这样做啊假设你的子网掩码是255.255.128.0
那么你的局域网内的ip地址的前两位肯定是固定的了(什么,为什么是固定的?你看上边不就明白了吗?・#¥)
这样,你就可以按照下边的计算来看看同一个子网内到底能有多少台机器 1、十进制128 = 二进制1000 0000
2、IP码要和子网掩码进行AND运算
3、
I P 地址 00010000.01001001.1*******.********
子网掩码 11111111.11111111.10000000.00000000
AND运算
00010000.01001001.10000000.00000000
转化为十进制后为:
16 . 73 . 128 . 0
4、可知我们内部网可用的IP地址为:
00010000.01001001.10000000.00000000
到
00010000.01001001.11111111.11111111
5、转化为十进制:
16.73.128.0 到 16.73.255.255
6、0和255通常作为网络的内部特殊用途,
通常不使用。
7、于是最后的结果如下:我们单位所有可用的IP地址为:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
. . . . . . . . . . . . .
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
. . . . . . . . . . . . .
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254
8、总数为(255-128+1)*(254-1+1) =128 * 254 = 32512
FAINT!!!!@#!@把我们公司都买了还买不了这么多的机器呢!・¥!・#
9、看看的结果是否正确
(1)、设定IP地址为192.168.128.1
Ping 192.168.129.233通过测试
访问192.168.129.233可以显示出主页
(2)、设定IP地址为192.168.255.254
Ping 192.168.129.233通过测试
访问192.168.129.233可以显示出主页
10、结论
以上证明我们的结论是对的。
现在你就可以看你的子网中能有多少台机器了
255.255.255.128
分解:
11111111.11111111.11111111.1000000
所以你的内部网络的ip地址只能是
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????
到
xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111
是否能懂不懂的话联系我:itfk121@163.com
推动平民化,打造精品hacker001.com
篇18:实时调度算法
}
if(ka)
numa++;
if(kb)
numb++;
}
return 1;
}
三、实验结果截图:
篇19:实时调度算法
一、基本思想:
在该实验中有两个周期性任务A、B,A的周期时间为20ms,每个周期的处理时间为10ms;任务B的周期时间为50ms,每个周期的`处理时间为25ms。 在t=0是,A1和B1同时到达,由于A1的截止时间比B1早,故调度A1执行;在t=10时,A1完成,又调度B1执行;在t=20时,A2到达,由于A2的截止时间比B2早,B1被中断而调度A2执行;在t=30时,A2完成,又重新调度B1执行;在t=40时,A3到达,但B1的截止时间要比A3早,仍执行B1,在t=45时,B1执行完,再调度A3执行;在t=55时,A3完成,调度B2执行。该实验将最早截止时间优先算法用于抢占调度方式。在该实验中,定义了两个开关来判断两个任务是中断还是调度执行。
二、源程序代码:
#include
int main
{
int A,B;
int tA,tB,serveA,serveB; //进程的周期时间和处理时间
float m;
int i,j,a=0,b=0,ka=0,kb=0; //ka,kb为开关,i,j,a,b为进程下标
int numa=0,numb=0; //处理累计时间
printf(”输入进程A的周期时间和处理时间:“);
scanf(”%d%d“,&tA,&serveA);
printf(”输入进程B的周期时间和处理时间:“);
scanf(”%d%d“,&tB,&serveB);
m=(float)serveA/tA+(float)serveB/tB;
for(int T=0;T<=100;T++)
{
if(m-1>1e-6)
{
printf(”超出CPU的处理能力!\n“);
return 0;
}
if(numa==serveA) //进程A完成
{
numa=serveA+1;
printf(”当T=%d时“,T);
printf(”进程A%d完成\n“,a);
if(numb
{
printf(” 调度进程B%d\n“,b);
kb=1;
}
ka=0;
}
if(numb==serveB)
{
numb=serveB+1;
printf(”当T=%d时“,T);
printf(”进程B%d结束\n“,b);
if(numa
{
printf(” 调度进程A%d\n“,a);
ka=1;
}
kb=0;
}
if(T%tA==0 && T%tB==0)
{
A=B=T;
j=++a;
i=++b;
printf(”当T=%d时,进程A%d和进程B%d同时到达,此时,“,T,j,i); if(tA<=tB)
{
printf(”调度进程A%d,中断进程B%d\n“,j,i);
ka=1;
kb=0;
}
else
{
printf(”调度进程B%d,中断进程A%d\n“,i,j);
ka=0;
kb=1;
}
numa=numb=0;
}
if(T%tA==0&&T%tB!=0)
{
A=T;
printf(”当T=%d时“,T);
printf(”进程A%d到达 “,++a); //不可能与进程A竞争处理器 numa=0;
if(numb
if(B+tB>A+tA) //若进程B最早截止时间大于进程A的 {
printf(”进程A%d执行。\n“,a);
ka=1;
kb=0;
}
else //若进程B最早截止时间小于等于进程A的
printf(”进程B%d继续执行。\n“,b);
else //进程B完成
{
printf(”进程A%d执行。\n“,a);
ka=1;
}
}
if(T%tA!=0&&T%tB==0)
{
B=T;
printf(”当T=%d时“,T);
printf(”进程B%d到达,“,++b); //不可能与进程B竞争处理器
numb=0;
if(numa
if(B+tB>=A+tA) //进程A的最早截止时间不小于B printf(”进程A%d继续执行。\n“,a);
else
{
printf(”进程B%d执行。\n“,b);
kb=1;
ka=0;
}
else //进程A完成
{
printf(”进程B%d执行。\n“,b);
篇20:社保费的算法
海上飞鸿 当前离线 在线时间5 小时魅力10 魅力银币153 银币最后登录2010-6-5阅读权
限20帖子10主题0UID58776. 狗仔卡
注册会员
注册会员, 积分 48, 距离下一级还需 152 积分
金币10 金币注册时间2010-4-25积分48精华0帖子10.串个门加好友打招呼发消息. 鲜花(1)
鸡蛋(0) 10楼顶贴的发言
发表于 2010-5-21 13:18:44 |只看该作者 具体的社保构成比例为:
养老保险:单位每个月为你缴纳21%,你自己缴纳8%;
医疗保险:单位每个月为你缴纳9%,你自己缴纳2%外加10块钱的大病统筹(大病统筹主
要管住院这块);
失业保险:单位每个月为你缴纳2%,你自己缴纳1%;
工伤保险:单位每个月为你缴纳0.5%,你自己一分钱也不要缴;
生育保险:单位每个月为你缴纳0.8%,你自己一分钱也不要缴;
住房公积金:单位每个月为你缴纳8%,你自己缴纳8%
以上,这么算下来,单位每个月为你缴纳的社保比例应该是
21%+9%+2%+0.5%+0.8%+8%=41.3%
你自己每个月为你缴纳的社保比例应该是8%+2%+10块+1%+8%=19%+10块
暂时去掉你交的10块钱不谈,单位缴纳的比例和你缴纳的比例应该为413:190,这就是说
如果
你每个月为自己的社保缴纳了190块钱,那么单位会往你的社保帐户上打进去413块钱,每个
月你的社保帐户上增加的钱就应该是413+190=603块钱
所以说在你看不见的情况下,单位交的社保费用其实是你的2倍还多,所以你每个月交社
保费
的时候千万别心疼呀~你要知道单位比你交的多得多了呢,心疼的其实是单位。
话说回到那三险一金和五险一金,这里大家应该已经看出来了,其实江湖上所说的三险
一金完全就等于五险一金,只是三险一金是从你个人交的保险(养老+医疗+失业+公积金)来
说的,五险一金是从你单位交的保险(养老+医疗+失业+工伤+生育+公积金)来说的。把三险一
金说成五险一金其实只是说起来好听而已。
除了单位能为你交社保,其实没工作但有收入的人员或者有单位但单位不交社保的人员
也可
以自己交社保,不过个人只能缴纳养老保险+医疗保险,工伤呀生育呀失业呀公积金呀,你个
人都交不起来的。
下面介绍下什么是社会保险缴纳基数
刚才大家已经知道了每个月单位缴纳的社保比例和你缴纳的比例差不多是413:190了,那
么现在又出来一个问题:自己每个月交的社保费和这个比例有什么关系呢,社保费到底是怎
么确定的呢?
大家可能没注意过,各个省市每年都会在7月初发布一个“社会保险最低缴纳基数”,这
个基
数是根据上一年度职工的平均工资+福利+各种补贴等杂七杂八的费用经过统计和计算以后
确定的,南京今年7月公布的最低基数是1189元,这是个什么意思呢,意思是说南京只要是正
规为职工缴纳社保的单位,每个月为每个职工交的钱最少为1189×41.3%=491元,而职工每个
月最少要交1189×19%+10=236元,这样你和单位每个月应该交的社保费就出来了。
但是现在又出来了新问题,南京市职工工资差别很大呀,有人一个月拿1000,有人一个月
能拿
10000,难道叫拿1000和拿10000的都交同样的社保费?
请注意,这1189是最低基数,在1189之上还有最高基数, 南京今年的最高基数好象是
8000多
,具体我也忘记了,反正如果你的工资每个月在1189元以下,单位也必须按照1189元为你交1
189×41.3%= 491元,而你自己每个月最少也要交1189×19%+10=236元,这个就是1189作为
社
保最低缴费基数的意义之所在了:哪怕你一个月拿1000或者800块,你每个月最低也必须要按
照这1189交钱!
但是如果你工资比1189要高,比如你一个月拿3000块,那单位去劳动局给你交保险的时
候(你
单位和你缴纳的社保费用都是劳动局扣的喔~)就应该对劳动局说:”呀呀,我们这边有位同
志一个月拿3000,请按照3000块钱的标准来扣社保费”.那么劳动局就会以3000块为缴纳基
数来扣你单位和你的钱然后打到你的社保帐户上,你单位这时候每个月就应该为你交3000×
41.3%= 1239元,而你个人每个月就该交3000×19%+10=580元
就是说如果你的工资在1189元以下,那么每个月你就按照1189交;如果你的工资在1189
元以
上,那么每个月你就按照你的实际工资交,除非你的工资比最高基数还要高,如果你一个月拿
10000而最高基数是8000的话,你和你单位就都按照8000交
在这里要揭露一些公司的无耻做法, 这些公司每个月可能给你好几千的工资,但是他们
去劳
动局申报你的基数的时候并不会按照你的实际工资去报,比如你如果每个月拿3000块,他们
去劳动局可能说你只拿1189块,然后劳动局每个月只扣你1189×19%+10=236元,你恐怕还高
兴的很,因为你觉得扣你的钱少,你实际拿到手的钱多
错! 如果这样你的公司就太无耻了!因为公司缴纳的钱是你的2倍多,所以你交的越少他们也
交的越少!如果按照你的实际工资3000来算,他们每个月该给你交 3000×41.3%=1239元的
社
保费,而按照1189来算的话,他们每个月只为你交1189×41.3%=491元!所以实际上你吃了大
亏!正规的公司只会按照你的实际工资去劳动局申报然后扣钱!只有那些下作的公司才会不
管你工资多高都按照最低标准给你交!!千万别以为每个月你的社保费扣的越少越好!!可能
你已经被公司无耻地欺负了而你还完全不知情!!!
要确定单位为你到底缴纳的基数是多少很简单:如果你每个月扣300块的社保, 那你的基数
差不多就是300÷19%≈1578元,你看看你工资是不是这个数,如果你工资明显比1578高,比
如
每个月你其实拿3000或者4000,那肯定你已经被公司给欺负了,被欺负以后你可以去当地的
劳动监察大队告你单位,一般一告一个准,不过最好在离职的时候把证据(比如工资条等)找
好了再告,否则你告了以后在公司一般混不下去了- -+
要再次说明的是,各个地方的社保构成比例不一样,如果你不在南京那你的缴费比例很可能
不是19%,但是肯定不会差太多,比如你的基数可能是20%或22%,但绝对不会是30%或40%!
所以
虽然19%是南京的比例,但是外地的同学也可以靠这个大概算出自己的基数
下面介绍一下这些社保费具体是什么情况以及该怎么用
前面已经说了, 社会保险=养老保险+医疗保险+工伤保险+生育保险+失业保险+住房公积金
先说说养老保险好了
这个保险一般都要交满15年以后到退休的时候才能终生享受养老金,所以想拿养老金的
同学
请务必在自己退休之前的15年以前就开始交,这个在南京以外差不多也是这样规定的
如果你到退休年龄交养老保险不满15年,那等到你退休的时候国家会把你个人帐户上存的8
%的养老金全部退给你
那你会问,单位给你交的21%到哪里去了?
这个你就别指望国家会交给你了,你退休把你个人的钱拿走之后,国家就把单位为你交的21
%的钱全部划到国家的养老统筹基金里了,从此这钱就和你再也没有关系了
你也许会说:我靠!那是我的钱为什么不给我
因为国家就是这么规定的
退钱的时候只退给个人他自己扣的个人交的钱,单位为他交的钱全部都为国家做贡献了
- -
下面我们来看一下你退休时候的养老金是怎么算出来的
养老金的算法很复杂,因为国家每年都会把缴费基数变一次,举例来说好了:如果你现在
30岁
,你现在的缴费基数是3000元,而退休年龄如果是55岁的话,那你必须在你40岁以前就开始
交
养老保险了,而如果你现在从30岁就开始交,交到55岁是25年,那首先肯定你能享受养老金
了
,其次,如果25年后你交的 3000块的缴费基数已经变成了6000块(我说的是如果),那你55岁
的时候首先每个月可以拿到6000×20%=1200块的基本养老金,这是国家给你的,此外你的个
人帐户上的钱在25年里也积攒了不少,把缴费基数平均一下好了,(3000+6000)÷2=4500,那
么你这25年里个人帐户上应该有4500×8%(你缴纳的养老保险的个人比例)×25年×12个
月
=108000元钱,那么除了之前的1200块以外你每个月还能拿到108000÷ 120=900块,这样你
5
5岁开始每个月起码可以拿到1200+900=2100元的养老金,当然每年国家的基数还在往上涨,
这样每年除了你自己的 900块,你退休以后每个月都会拿到比1200块更多的钱,那你的养老
金当然也会越来越多的
所以说交养老保险交得越多越好,你交得越多你退休以后享受的也越多,而且,国家每年
调整
基数以后你拿的钱也会越来越多,现在交1000十年之后拿1500都是有可能的
这里要介绍一个变态的政策,就是不管你在哪里交社保费,等你退休的时候你都只能回你的
户口所在地享受当地的退休待遇,这么来看,在基数高的地方交社保但是退休回基数低的地
方享受养老金的人那就亏大了, 为什么这么说呢?我来举个例子,如果你年轻的时候在南京
工作,交了20年的社保然后退休了,但是如果你的户口在黑龙江,那你必须回黑龙江享受养老
金.如果你在南京交了20年的平均基数是3000(我说的是如果),而当你退休的时候黑龙江的
缴费基数才1000(我说的是如果),那么你退休的时候只能享受 1000的待遇!这是很亏的!一
句话,如果你在富地方交社保但是退休的时候回穷地方享受社保,那你一辈子交的很多但是
享受的很少!交3000 块可能只能享受1000块!这是很恐怖的事情,但是没办法,国家就是这个
政策,所以请所有目前户口在西部等基数低的地方但是在北京或上海等基数高的地方工作交
社保的同学注意了,你要么就在西部交社保,要么就在退休之前把户口迁到北京或上海,否则
你就是在做人生一笔巨亏本的买卖
那也许你会说,如果我的户口在南京,那我在黑龙江交20年不就好了嘛,在基数低的地方
交钱
,退休的时候回基数高的地方享受高福利.错!你以为南京市劳动局会随随便便就让你享受么
?!一般这种情况下南京会找个理由直接拒绝你转入!到时候你就聪明反被聪明误了:在黑龙
江享受不了,在南京也享受不了!
不过有些地方对这样的情况有了一些缓和的规定,比如南京允许你在退休前5年从基数低的
地方转回南京,再在南京继续交5年南京的高基数,之后它才允许你回南京享受养老金.这个
政策各个地方估计都不一样,今后打算转的同学最好现在就去你当地的劳动局把这个问题搞
清楚,免得退休时候发生你意想不到的意外!
下面说说医疗保险
这个险国家的政策还算不错,重要的是住院报销的不少
之前说了单位每月给你交的医疗保险是9%,你个人每月交的医疗保险大概是2%外加10块钱
的
大病统筹,这个大病统筹不管别的只管你住院,而那11%里国家每个月会往你的医保帐户上打
属于你自己的2%,如果你每个月按照1189元的最低基数交社保,那么1189×2%=23.78元就
是
国家每个月打给你个人的钱,这个钱你可以积累起来直接刷卡去买药或者看门诊,剩下的9%
国家就拿去算到医疗统筹基金里了
按照南京的规定,如果你从2007年1月开始缴纳医疗保险,那么从2007年2月起你就可
以刷卡
买药或者看门诊了,从2007年7月起你住院的费用就可以报销了,报的还蛮复杂的,举例说好
了:
如果你2007年8月1日住院了,住的是南京市最好的三级医院,住院期间用的都是医保范
围内
的药,手术+住院等费用一共花了5000元,那么报销的时候医保中心首先扣除1000块,这是起
步价,剩下的4000块医保中心可以报销4000×86%=3440元,你个人只要付4000×14%=560
元就
可以了,加上之前的1000元起步价,你花了5000块自己只要付1560元就可以了,而且这1560
元
还可以从你的医保卡里扣(如果你平时不怎么用那卡), 所以实际上你住院花不了多少钱
医疗保险对于我们年轻人来说比养老保险重要多了,毕竟看病住院实在太他妈贵了,这也是
参加社会保险最重要的意义之所在
不过南京市规定医疗保险必须交满25年才能在退休以后终生享受,所以如果你55岁退休,那
最迟30岁起就必须开始交医疗保险了
下面说说工伤保险
这个险实践中一般用得少,我接触的也不多,需要提醒大家的是你如果在工作的时候或者
上
下班的时候出了什么事,这个险就用得上了
但是在实践中很多人出了事不注意保存证据,导致自己无法享受工伤保险,这是很可惜的
如果你下班的时候被车撞了,那你应该赶快报警,让警察来调查记录并拍照采集证据,警察处
理完以后会给你开个事故什么鉴定书之类的东西,你就可以拿这个去单位要求报工伤了
如果你出了事就随便让人跑了而且还不找证人还不报警什么的,那没证据的情况下一般不会
被采纳为工伤的
工伤还有个时效问题,如果你2007年7月1日出了工伤,那你必须马上报告单位,把警察
出具的
证据和事故鉴定书以及你出工伤以后去看病或住院的病历交给单位,叫单位拿着这些材料去
做工伤鉴定,你的单位必须在2007年8月1日之前把你的有效材料送到工伤鉴定中心,如果距
离你出工伤的日子超过了一个月, 那工伤可能就鉴定不起来了.如果你单位不去给你鉴定,
那你自己可以拿着材料去鉴定中心鉴定,最好也不要超过一个月,否则会很麻烦很麻烦
下面说说生育保险
这个也举例说明好了,如果你是位女生,每个月工资为1000元,2007年1月1日开始交生
育
保险,缴费基数为1189,而你2007年3月怀孕,2007年12月底生了孩子,2008年1月出院,那么
你
出院以后要赶快把结婚证(未婚生子的报销不了)+独生子女证(一般来说生2胎的报销不了)
+病历+建大小卡检查和住院和手术费用的所有发票+住院清单+出院小结这些所有的材料交
到公司,如果你怀孕时候检查花了500块,生孩子的时候住院+手术花了2000块,一般来说,公
司在医保规定范围内基本上可以给你全部报销,报销以后给你的钱包括:500块检查费+2000
块住院手术费+1189元/月×4个月=7256块, 1189元/月×4个月这是医保中心特别为报销的
女生补贴的,只有女生报销才能拿的到
国家规定女孩子报销生育保险的时候必须给4个月的平均工资,所以你生孩子报销的话
不仅
不要花钱而且还可以赚4个月的工资!如果你基数交的比工资高,比如拿1000块交的是1189,
那么你还赚了呢
生育保险起码要交一年才能享受,切记切记
此外还有个问题,男生也交生育保险呀~那么男生可不可以享受生育保险呢?
如果你是男生,你老婆没工作或者工作单位没交保险,而她生孩子的时候你交生育保险也已
经超过了一年,那么你也可以报销生育保险哦,但是以之前的例子为例,你只能报销500块检
查费+2000块住院手术费的一半=1250元, 补贴的1189元/月×4个月的工资你就享受不到了
!这是只有女生报销的时候才可以享受的哦~
同样的花费,女生报销就能拿7256块,男生报销只能拿1250块,这大概也是中国少有的'”歧视
男性”的政策的说- -+
所以说,女生要生孩子之前最好计划一下,提前一年开始找个单位交生育保险,可以赚呢!
而男生如果要娶老婆,最好娶一个生孩子的时候已经交了一年生育保险而且缴的基数还比她
本身工资高的女生哦!不过如果她实在没保险也没关系,你还可以给她报销生育保险呢,不过
你没补贴的4个月工资拿,而且该报的费用你只能拿回来一半。
失业保险
失业保险,这个也是要你交满一年才能享受,一般交1年拿2个月,交2年拿4个月,但一辈子最
多拿24个月.举例说明好了:
如果你2007年1月1日开始交保险,2008年1月你被公司辞退了,那你可以让公司给你
拿2个月
的失业保险,如果这一年你都是以1189的基数交的保险,那你2个月起码可以拿到800多块钱
或者你2007年1月1日开始交保险,2008年1月你和公司合同到期了,你们都不想续签合同
的话
那你也可以在离开公司以前让公司给你去拿2个月的失业保险,也是800多块
就是说合同到期或者公司辞退,你都可以按照一年拿2个月的失业金的比例去要求公司给你
办,如果公司不给你办你可以去告它,一告一个准。
但是如果你是合同没到期自己辞职走,那就算你交满了1年也享受不到失业保险
只要是自己辞职的,别说交1年了,就是交10年的失业保险到辞职的时候你也拿不到一分钱。 住房公积金是个好东西啊
这么说吧,如果你每个月为公积金交200块,那么公司每个月也往你帐户上打200块,你买
房子
的时候这就是400块了,如果你一辈子交了5万,那你帐户上就是10万了,这种好事大家一定
不
要拒绝啊。
公积金可以用来买房子,还贷款,装修什么的,如果你自己家可以找到地皮盖房子,那盖房
子
的钱也可以从公积金里付
如果你一直不用这钱,最后退休的时候貌似可以把钱全部取出来吧
[进阶篇]各项补充说明 [5KB]
来说说和南京不同的地方吧,魔都是不允许不缴医疗保险的,也就是说社保中心这一块包
括养老医疗失业工伤生育一起问企业收的,倒是公积金可缴可不缴,因为这是隶属公积金
中心的管辖范畴
具体的社保构成比例为:
养老保险:单位每个月为你缴纳22%,你自己缴纳8%;
医疗保险:单位每个月为你缴纳12%,你自己缴纳2%;
失业保险:单位每个月为你缴纳2%,你自己缴纳1%;
工伤保险:单位每个月为你缴纳0.5%,你自己一分钱也不要缴;
生育保险:单位每个月为你缴纳0.5%,你自己一分钱也不要缴;
住房公积金:单位每个月为你缴纳7%,你自己缴纳7%
补充住房公积金:单位每个月为你缴纳8%,你自己缴纳8%(这个只有一般效益很好的国
企
才会有的,且比例又公司自己定,一般公司缴个公积金就算很道义了)
另外要说的是社保和个调税的关系
在缴纳个调税的时候,是把个人扣金那部分扣除后再算应纳税基数的,但是有一点要注意
,公积金和补充公积金超过12%的部分(个人和企业缴纳部分)也需要算在应纳税基数中
比如上面说的公积金7%、补充公积金8%,加起来就是15%,那么个人扣金那3%的部分就
要算
在应纳税额中,同时,企业的那3%,虽然不是从个人工资里扣除的,但还是要算在应纳税
基数中,也就是说,个人要为这笔费用的个调税埋单。
医疗保险使用这一块,各地对于划入个人账户的方式不同
爱说的是南京那种按月划入的方式,还有很多地方是按年划入
具体来说是这样的,医保年度是每年的4月1日至次年的3月31日,同时社保缴费基数变
更也
是在4月上中旬确定。
医保局会在4月1日按照每人的社保基数预提1年的个人医保(也就是那2%)进入个人医
保卡
账户,但这时候就有问题出现了,4月1日的时候,当年的社保基数尚未确立,医保局只能 按照上一年的基数来预计当年的个人医保金,那么这个差额该怎么办呢?那就是在第二年 的4月1日来补足少算的或扣除多给的
可能这么大段字看起来会觉得很麻烦,那我们举例来说
某人2004年月平均收入5000元,2005年月平均收入4000元,2006年收入6000元
医保局在2006年4月1日给个人账户打入金额的时候,社保中心还没有核准2006年的缴费基
数(也就是2005年的月平均收入),所以医保局还是按照2005年的缴费基数(也就是2004 年的月平均收入)来计算全年的个人账户数额,
也就是5000*2%*12=1200,
但实际上此人这一年的个人账户数额应该是
4000*2%*12=960,
那么这多给的240元会在2007年4月1日的时候扣除。同时2007年4月1日打入帐户的新一年个
人金依然是960元(其实应该是6000*2%*12=1440元),少给的480元,会在2008年4月1日补
回来。
所以因为大部分人每年的缴费基数都不相同,所以几乎每个人每年3月的帐户总数和4月时 看到的历年帐户的金额是不同的,这就是医保局在做每年的费用核算时产生的。
工伤还有个时效问题,如果你2007年7月1日出了工伤,那你必须马上报告单位,把警察出具的
证据和事故鉴定书以及你出工伤以后去看病或住院的病历交给单位,叫单位拿着这些材料去 做工伤鉴定,你的单位必须在2007年8月1日之前把你的有效材料送到工伤鉴定中心,如果距 离你出工伤的日子超过了一个月,那工伤可能就鉴定不起来了.如果你单位不去给你鉴定,那 你自己可以拿着材料去鉴定中心鉴定,最好也不要超过一个月,否则会很麻烦很麻烦
这点有个补充,申报工伤有两种途径,一个是单位申报,就和上面爱说的一样,30天内有 效,还有一种是个人申报,一年内有效,但由于伤势或其他原因,拖得越久证据就越不足 ,个人申报的话也会因为不懂得流程耽误很多时间和精力。
生育保险方面,流产的、难产的、多胞胎的、早产的,可以具体看看下面这个链接,虽然 是上海的政策,但各地都有相似性。
可能上海和南京政策上有不同,公司绝对不会管这方面的报销,都是由医保直接和孕妇挂 钩
在生育检查生产住院期间,医保统筹范围之内的都是医保统筹支付,当然自费的项目(比 如高级病房、自费药etc)还是要自己承担。
生好孩子后,自己去医保局申请生育补助,医保局给3000块钱
社保那块,再给3个月的缴费基数的收入
晚育的加半个月,多胞胎的,多一个加半个月
如果上一年月平均工资性收入是大于社保缴费基数上限的,那么社保只支付缴费基数那部 分,剩下的由公司支付
例如某人上一年月平均工资性收入为10000,社保基数封顶为7392。
那么社保给的每月收入为7392,剩下的10000-7392=2608就是由单位支付。
(虽然我觉得这种情况,在云中的各位看官不太容易碰到=。=。。)
其实关键的地方有两点:
1、生育前缴费满1年
2、社保缴费基数正常申报
所以说同学们,特别是女同学们,不要觉得公司给你申报的基数高低无所谓,甚至为了基 数低些自己工资到手高而庆幸,到这时候就看出问题来了吧!
这也就是为啥有那么多女职工宁可留在工资低但是社保足额申报的地方生完孩子再跳槽的 原因,一来小地方不喜欢未婚未遇的女性员工,二来生育保险也是很大一笔收入补充。 比如说,一个人正常工资3000,但是社保基数申报时算上她的年终奖等等其他奖金收入, 那么月平均可能达到5000,这时候生孩子的那几个月拿的就是一月5000的收入。 如果你一直不用这钱,最后退休的时候貌似可以把钱全部取出来吧
不是貌似,是绝对可以!
而且公积金贷款比商业贷款利息低的多,这也是一大好处。
原文标题:养老保险缴费基数现在是定高好还是低好? - 家庭理财 - 家长100教育论坛 原文网址:www.jiazhang100.com
★ 排序算法总结
KPM算法心得体会(精选20篇)




