挑战程序设计 算法与数据结构(八皇后问题)
程序的简洁程度,编码的难易程度,运算效率,内存使用量都是选择算法的标准
O(n)
高效率:O(n)=logn, sqrt(n)
降低多重循环,多重循环--->单重循环
排序:
插入排序:O(n^2),能快速处理相对有序的数据
冒泡排序:O(n^2)
选择排序:(不稳定) O(n^2)
稳定排序:
希尔排序:O(n^1.25)
数据结构:
栈 逆波兰表达式
atoi() 字符串类型数字转换为整型
队列
链表
搜索
scanf printf 比cin cout 效率更高
硬币问题
背包问题
检验质数的新方法:
判断数x能否被2到sqrt(x)之间的数整除
(“合数x拥有满足p<=sqrt(x)的质因数p”)
例:
检验31是否为质数时,只需判断31能否被2到6整除即可。
埃拉托色尼筛选法
(快速列举出给定范围的所有质数)
1.列举大于等于2的整数
2.留下最小整数2,删除所有2的倍数
3.在剩下的整数中留下最小的3,删除所有的3的倍数
4.在剩下的整数中留下最小的5,删除所有的5的倍数
5.。。。。。。。。循环
最大公约数
辗转相除法
幂乘:
反复平方法
pow(x,n)= 1(n=0)
pow(x^2,n/2) n为偶数
pow(x^2,n/2)*x n为奇数
注:
在求计算结果%M时
加法:每相加一次执行一次%M
减法:给被减数加上M后再算减法后算%M
乘法:每乘一次执行一次%M
八皇后问题
理解
九宫格问题
转载请标明出处