摘要: 设将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 朴者 阅读(1406) 评论(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 朴者 阅读(1268) 评论(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 朴者 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 还可以运用系统调用函数实现cat命令的功能: 阅读全文
posted @ 2018-09-21 16:13 朴者 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 输入输出:print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:>>> print('The quick brown fox', 'jumps over', 'the lazy dog') 注意,逗号的位置会打印一个空格 input()可以让你显示一个字符串来提示用户,于是我 阅读全文
posted @ 2018-09-19 19:10 朴者 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法 阅读全文
posted @ 2018-09-19 17:01 朴者 阅读(2786) 评论(0) 推荐(0) 编辑
摘要: 还有一种是通过尾递归优化: 解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用 阅读全文
posted @ 2018-09-13 12:01 朴者 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 一般来说,swap操作将容器内容交换不会导致容器的指针、引用、迭代器失效。 但当容器类型为array和string时除外。 原因在于:SSO (Short String Optimization 指C++针对短字符串的优化。) 默认情况下,C++的std::string都是存储在heap中,导致访问 阅读全文
posted @ 2018-09-12 11:49 朴者 阅读(1524) 评论(0) 推荐(3) 编辑
摘要: container<type> c; 输出语句为:copy(c.begin(), c.end(), ostream_iterator<type>(cout, " ")); 这句代码将依次向屏幕输出容器中的元素,元素之间用" "空格分开。 空格可以换成其他的C-Sty1e字符串。 需要使用<algor 阅读全文
posted @ 2018-09-11 19:24 朴者 阅读(494) 评论(0) 推荐(0) 编辑
摘要: day06 1.初始化和赋值是有区别的,前者效率更高。有时候必须使用初始化。如果成员是const、引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初始值。注意:数据成员会按其出现在类定义中的顺序得到初始化,而不是按其在初始值列表中的顺序。2.如果一个构造函数 阅读全文
posted @ 2018-09-07 20:12 朴者 阅读(120) 评论(0) 推荐(0) 编辑