OJ常规题------利用结构体解决学生成绩排序的问题

此类问题一般是输入N个学生的个人信息,一般包括学生的姓名、学号、年纪、成绩......这些信息,我们将每个学生的这些信息组合起来,利用Struct声明一个结构体,将它的信息作为其成员变量。 然后我们根据它的排序要求编写进行计较规则的方法,取名cmp()。再调用系统的sort函数即可(需要加声明:...

2018-07-16 23:04:06

阅读数 264

评论数 0

反射(Reflection)总结

一、基础概念 1、反射(Reflection)就是将一个Java类中的每一个成分解析成一个Java类。 Java类用一个Class类的对象表示,其中一个类的基本组成成分:成员变量、方法、构造方法等信息用一个个的类来表示。而这个类的Class类选举要提供一系列的方法来获取其中的变量、方法等信息,...

2018-07-08 17:57:07

阅读数 56

评论数 0

大数排序+大数相加+大数相乘

在我们通常遇到的数的计算中,往往范围比较小,int、long、long long等就可以满足,但是在一些题目或者特殊情况时,我们遇到的数位数很长,基本的一些数据类型显然不满足,所有采用字符型数组输入这个数字,进行一些计算。(char [] 或者string;注意:char[]结尾一定要有'\0'字...

2018-07-03 17:49:53

阅读数 54

评论数 0

给出描述的n个节点,求其邻居节点以及判断两个节点是否有直接联系

具体描述:txt文件中存储n个节点直接的联系,形如1,2表示节点1和节点2直接联系,或者说他们是邻居。有很多组这样的数据,要求将这些节点读出来进行存储。然后实现输入节点号,输出它的邻居节点。以及输入两个节点ID号,判断他们是否直接相连。分布解析这个题目要求。1、先读取txt文件中的数据,用Arra...

2018-06-23 14:00:27

阅读数 1205

评论数 0

求解组合数取模---拓展欧几里德和费马小定理求解逆元

组合数:C(n, m) ;         组合数取模:C(n, m) % mod,mod是一个很大的数。1.公式:2.性质:(1)C(n,m)= C(n,n-m)   其中有C(n, 0) = 1;         (2)C(n,m)=C(n-1,m-1)+C(n-1,m)。可以用作递归中的公式...

2018-06-13 15:24:41

阅读数 217

评论数 0

动态规划解决---最长递减(或递增)序列

定义:在一个没有排好序的数组中,找最长的单调递减或单调递增的序列。解题思路:通过动态规划解题。假设从0--(i - 1)已经构成了长度为s的递减序列,且这些序列中的末尾值中的最大值为t;1、如果a[i] < t,则假如到这个序列中去,长度变为s + 1。对应的末尾值变为a[i...

2018-06-10 20:28:43

阅读数 550

评论数 0

(C语言)链表的实现集合的相关操作

集合的特征:确定性/ 互异性/ 无序性。常见的操作:1、查找集合中是否包含这个数据元素:Contains();2、添加一个新成员数据,集合中不能存在这个元素。AddMember();3、删除指定元素, 找到这个元素, 删除;如果没找到,则提示没找到,返回0(表示false)。Delete();4、...

2018-06-01 22:38:43

阅读数 580

评论数 0

python基础及实现词法分析器的基本实现

python基础:1、list的使用,即列表。定义:list(列表名) = [];如下还有对他的遍历,这里的word算是定义了一个变量去存储res[i]的值:# -*- coding: cp936 -*- if __name__=="__main__": ...

2018-05-24 21:22:35

阅读数 2950

评论数 3

图的基本概念及存储结构

图的基本概念:定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V(vertex)是图G中顶点的集合,E(edge)是图G中边的集合。分类:1、按有无方向分类:有向图和无向图。无向图由顶点和边组成,有向图由顶点和弧组成, 弧有弧头(h...

2018-05-22 16:42:17

阅读数 214

评论数 0

前缀、中缀、后缀表达式及中缀转后缀表达式

前缀表达式:不含括号的算术表达式,而且是将运算符写在前面,操作数写在后面的表达式。求法:首先从右往左扫描表达式,从右边第一个字符判断,如果当前字符是数字,则一直到字符串的末尾再记录下来;如果是运算符,则将右边最近的两个数字串做相应的运算,以此作为一个新串并记录下来。一直扫描到最左端停止。例子:(a...

2018-05-19 23:38:26

阅读数 834

评论数 1

查找(一)-----顺序表的顺序查找和折半查找

顺序表的顺序查找:基于顺序表,查找指定的key元素, 给出三种:返回它的索引值(否则返回-1), 判断是否存在这个值(存在返回true, 否则false),查找(存在返回这个元素的值, 不存在返回-1)。就是对这个顺序表进行遍历。从第一个元素开始和指定的元素做比较。参考代码:public clas...

2018-05-16 11:13:51

阅读数 2056

评论数 0

hashcode和equals

hash算法简介:举例,假如有一个集合,让你查找这个集合中是否包含某个元素?常规的就是遍历这个集合,集合中的元素equals(指定元素时, 则返回true, 否则返回false。但是当这个集合很大呢?有几万个,甚至几十万个元素呢?这时遍历显然效率极低。所以有人发明了哈希算法,将这个集合分成若干个区...

2018-05-09 20:25:12

阅读数 30

评论数 0

矩阵的转置和旋转

转置:转置很简单的,就是a[i][j] -- > a[j][i]即可。可以开辟一个新的二维数组。b[i][j] = a[j][i]即可。例题:输入一个N*N的矩阵,将其转置后输出。要求:不得使用任何数组(就地逆置)。此时应该怎么办呢?只要根据题目要求,直接输出就可以啦!(解释...

2018-05-07 21:23:01

阅读数 863

评论数 0

快速幂

这里介绍的是求a^b的运算。常规思路:b个a相乘。int pow(int a, int b){ int ans = 1; for(int i = 1; i <= b; i ++){ ans *= a; } return ans; } 但是当b很大时,复杂度很高,所...

2018-05-02 17:52:24

阅读数 33

评论数 0

红黑树(三)

删除操作1. 在纯函数式的环境下,纯函数式的数据结构决定了树不是真的被改变了,实际上是重建一棵树。(大多数函数式编程环境使用一种名叫Persistent的方法,可以复用树中没有改变的部分,从而减小重建的开销)。利用一个双重黑色的引入。将删除节点的颜色(黑色)保存在其父节点中,如果父节点红色,则染成...

2018-04-28 20:30:09

阅读数 25

评论数 0

动态规划及实例

01背包问题:一个容量为C的背包,n个物品,他们的重量分别是w[i],价值分别是v[i],怎样选择装入的物品使价值最大?分析:面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入同一物品多次。所以声明一个 大小为  m[n][c] 的二维数组,m[ i ][ j ...

2018-04-26 21:48:17

阅读数 237

评论数 0

日期处理

日期的标准输出格式:yyyymmdd(y : year, m : month, d: day),例如:2000-05-01。闰年的计算:什么是闰年?即年份可以被4整除但不能被100整除,或者可以被400整除。判断闰年的参考代码:bool isLeapYear(int year){ return ...

2018-04-24 21:47:04

阅读数 38

评论数 0

红黑树(二)

红黑树的插入操作1. 以排序二叉树的方法插入新节点,并将它设置为红色。设置红色:如果设置黑色,会导致根节点到叶子节点的路径上多出一个额外的黑节点,这样会很难调整。但是设置为红色可能会导致出现两个连续的红色节点(违反了性质4),因此需要通过颜色转换和树旋转来进行调整。2. 颜色转换和树旋转新插入的节...

2018-04-22 23:05:35

阅读数 43

评论数 2

约数的个数

题目描述:输入n个整数,依次输出每个数的约数的个数。输入描述:输入的第一行为N,即数组的个数(N<=1000),接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000),当N=0时输入结束。输出描述:可能...

2018-04-21 23:10:51

阅读数 806

评论数 0

红黑树(一)

之前一篇讲关于二叉搜索树的文章(参看:点击打开链接),但是存在一个问题,在最坏情况下,插入的节点本身就是有序的,要么是从大到小排列,要么是从小到大排列,那最后得到的排序二叉树将会变成链表。这样其检索效率特别差。如图:为了改进这种不足,Rudolf Bayer于1972年发明了另一种改进后的排序二叉...

2018-04-19 21:41:20

阅读数 39

评论数 0

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