1、有些地方用short代替int可以省内存,对于非负整数使用unsinged来定义
2、动态规划(DP)
1)序列的最大连续和(2479,2593,1050)
递归式:D[0]=X[0];
D[n]=X[n]+max{0,D[n-1]};(D[n]表示以X[n]元素结尾的最大连续和,整个序列的只要求出D[n]的最大值即可)
2)背包问题(1837,1276)
无界背包:
递归式:A(0) = 0
A(Y) = max { A(Y - 1), max { pj + A(Y - wj) | wj ≤ Y } }
0-1背包:
递归式:A(0, Y) = 0
A(j, 0) = 0
如果wj > Y, A(j, Y) = A(j - 1, Y)
如果wj ≤ Y, A(j, Y) = max { A(j - 1, Y), pj + A(j - 1, Y - wj) }
3)序列最长升序列(1836)
递归式:F[t] = 0(t = 1, 2, ..., len(A))
F[t] =max(1, F[j] + 1)(j = 1, 2, ..., t - 1, 且A[j] < A[t])(以t结尾,即以A[t]为最大值的最长升序列)
4、输入含有空格的字符串:
用gets()函数。用scanf()也可以,scanf("%[^/n]s",str)。
5、scanf和printf函数里面的数据格式一定要严格一致,不然会出现各种意想不到的问题。
6、使用STL函数简化代码,提高效率。常用STL函数:
1)sort函数、nth_element函数
http://www.cppblog.com/mzty/archive/2005/12/15/1770.html
http://www.51testing.com/?uid-258885-action-viewspace-itemid-131988
http://www.slyar.com/blog/stdlib-qsort.html