09 2018 档案

摘要:书接上文。 输入一组数,找出其中满足某种条件的数。 短短的一句话,可以衍生出各种场景。今天遇到一道题,输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从大到小输出。分数均为不超过100的非负整数。 我首先想到的是利用哈希表,用空间换时间。 1 #include<iostream> 2 u 阅读全文
posted @ 2018-09-28 19:23 朴者 阅读(214) 评论(0) 推荐(0)
摘要:1.输入一组数,找出它的最大值,最小值,平均值。 关键点是要把第一个数赋值给min,max,sum 2.输入一组数,找出最接近的两个数。 3.输入一组数,找出第二大的数。 思路:利用两个变量,一个存储用来最大数(初始化为输入的第一个数),一个用来存储第二大的数(初始化为-INT_MAX),输入过程中 阅读全文
posted @ 2018-09-27 18:46 朴者 阅读(348) 评论(0) 推荐(0)
摘要:顺序队列一般实现为循环队列,因为普通的队列可能产生“假溢出”。 循环队列的两个状态: 1.队空 2.队满 (注意,循环队列必须损失一个存储空间,用来区分队空和堆满,如果队列中的所有空间对被占满,那么队空和队满的状态都是qu.front == qu.rear,导致无法区分) 循环队列的两个操作: 1. 阅读全文
posted @ 2018-09-26 15:31 朴者 阅读(2084) 评论(0) 推荐(0)
摘要:栈可以是顺序栈,也可以是链栈。 顺序栈: 顺序栈还可以更简化,使用数组来创建: 链栈: 栈的应用: 1. 编写算法,判断一个算术表达式中的括号是否配对。表达式已经存入字符数组中,元素从下标1开始存储,表达式中的字符个数为n 思路:遍历这个表达式,当遇到第一个 '(' 时,入栈,继续遍历,如果遇到 ' 阅读全文
posted @ 2018-09-25 19:40 朴者 阅读(905) 评论(0) 推荐(0)
摘要:链表需要包含的操作有头插法建立链表、尾插法建立链表、在指定位置插入元素、打印链表、删除链表、寻找中间元素、单链表 1 // 定义一个链表及相关操作 阅读全文
posted @ 2018-09-25 16:02 朴者 阅读(2556) 评论(0) 推荐(0)
摘要:思路:因为A,B链表中元素递增有序,要使归并后的C也递增有序,可以每次从A、B中挑出最小的元素插入C的尾部,这样循环插入完成后,C也一定是递增有序的。 需要注意的点是,A、B中的元素有可能一个已经全部被插入到C中,而另一个还没插完。 如果题这样改:A、B递增有序,合并成C后,C递减有序,怎么做? 前 阅读全文
posted @ 2018-09-25 11:54 朴者 阅读(5999) 评论(0) 推荐(0)
摘要:设将n个整数存放在一维数组R中。设计一个算法,将R中的序列循环左移P个位置,即将R中的数据由{X0,X1,X2....Xn-1} 变换为{Xp,Xp+1,...,Xn-1,X0,X1,X2...,Xp-1}。 思路:要实现R中的序列循环左移P个位置,只需要将R中前P个元素逆置,再将剩下的元素逆置,最 阅读全文
posted @ 2018-09-25 09:35 朴者 阅读(1435) 评论(0) 推荐(0)
摘要:埃氏筛法求素数和构造素数表求素数是一个道理。 首先,列出从2开始的所有自然数,构造一个序列: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ... 取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉 阅读全文
posted @ 2018-09-24 16:16 朴者 阅读(1358) 评论(0) 推荐(0)
摘要:杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 11 5 10 10 5 1 列表生成式: [ x*x for x in range(10) if x%2 == 0] 将得到一个list [0,4,16,36,64 ] generator: g = ([x*x for x in 阅读全文
posted @ 2018-09-23 11:12 朴者 阅读(279) 评论(0) 推荐(0)
摘要:还可以运用系统调用函数实现cat命令的功能: 阅读全文
posted @ 2018-09-21 16:13 朴者 阅读(266) 评论(0) 推荐(0)
摘要:输入输出:print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:>>> print('The quick brown fox', 'jumps over', 'the lazy dog') 注意,逗号的位置会打印一个空格 input()可以让你显示一个字符串来提示用户,于是我 阅读全文
posted @ 2018-09-19 19:10 朴者 阅读(132) 评论(0) 推荐(0)
摘要:假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法 阅读全文
posted @ 2018-09-19 17:01 朴者 阅读(2889) 评论(0) 推荐(0)
摘要:还有一种是通过尾递归优化: 解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用 阅读全文
posted @ 2018-09-13 12:01 朴者 阅读(485) 评论(0) 推荐(0)
摘要:一般来说,swap操作将容器内容交换不会导致容器的指针、引用、迭代器失效。 但当容器类型为array和string时除外。 原因在于:SSO (Short String Optimization 指C++针对短字符串的优化。) 默认情况下,C++的std::string都是存储在heap中,导致访问 阅读全文
posted @ 2018-09-12 11:49 朴者 阅读(1576) 评论(0) 推荐(3)
摘要:container<type> c; 输出语句为:copy(c.begin(), c.end(), ostream_iterator<type>(cout, " ")); 这句代码将依次向屏幕输出容器中的元素,元素之间用" "空格分开。 空格可以换成其他的C-Sty1e字符串。 需要使用<algor 阅读全文
posted @ 2018-09-11 19:24 朴者 阅读(527) 评论(0) 推荐(0)
摘要:day06 1.初始化和赋值是有区别的,前者效率更高。有时候必须使用初始化。如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初始值。注意:数据成员会按其出现在类定义中的顺序得到初始化,而不是按其在初始值列表中的顺序。2.如果一个构造函数 阅读全文
posted @ 2018-09-07 20:12 朴者 阅读(130) 评论(0) 推荐(0)
摘要:题目描述: 输入一个字符串,求出其中最长的回文。(回文:正着看和倒着看相同,如abba和yyxyy)。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样。输入字符串的长度不超过5000,且占据单独的一行。ying'g输出最长的回文串,如果有多个,输出起始位置最左边的。 样例输入:C 阅读全文
posted @ 2018-09-06 22:48 朴者 阅读(232) 评论(0) 推荐(0)
摘要:day05 1.当我们的类没有显式地定义一个构造函数时,编译器就会为我们隐式地定义一个默认构造函数,又称为【合成的默认构造函数】。默认构造函数又叫零参数构造函数,当我们显式定义了其他构造函数,编译器就不会生成默认的构造函数了。因为定义在块内的内置类型或复合类型被默认初始化会得到未定义的值,所以,如果 阅读全文
posted @ 2018-09-06 17:44 朴者 阅读(162) 评论(0) 推荐(0)
摘要:1.函数指针。函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型决定,与函数名无关。比如:bool lengthCompare(const string &,const string &); 该函数的类型为bool(const string &,const string &)声明一个指向该 阅读全文
posted @ 2018-09-06 17:44 朴者 阅读(89) 评论(0) 推荐(0)
摘要:day03 1.在表达式求值之前,小整数类型的运算对象会被提升成较大的整数类型。eg: bool b = true; bool b2 = -b; // b2是true! 原因是当b参与运算时,被提升为int类型,即被提升为整数1,求负后为-1,所以b2为真。由此可见,bool类型不应该参与运算。2. 阅读全文
posted @ 2018-09-04 20:03 朴者 阅读(188) 评论(0) 推荐(0)
摘要:描述:在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 思路:若输入n=4,则矩阵中最大为4*4 = 16. 填数时,应该在最右上角位置开始,也就是第0行,第n-1列开始。列不变行向下到底端, 行 阅读全文
posted @ 2018-09-02 16:34 朴者 阅读(241) 评论(0) 推荐(0)
摘要:问题描述:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,依此类推,一共k个人,问最后有哪些灯开着? 输入n,k,输出开着的灯的编号。 k<=n<=1000 思路:定义一个存储灯的布尔类型的数组,将它们的值都 阅读全文
posted @ 2018-09-02 16:06 朴者 阅读(193) 评论(0) 推荐(0)
摘要:编写程序计算所有N位水仙花数。(eg:153 = 1^3+5^3+3^3) 阅读全文
posted @ 2018-09-02 14:19 朴者 阅读(206) 评论(0) 推荐(0)
摘要:day02 1.关于类型别名(1)typedef double d; // d是double的别名(2)using d = double; // c++11新标准,d是double的别名注意问题:遇到一条使用了类型别名的声明语句,我们往往会尝试把类型别名替换为它原来的样子,这样是不对的。eg: ty 阅读全文
posted @ 2018-09-01 19:20 朴者 阅读(177) 评论(0) 推荐(0)