2020-08-20

2020-08-21  本文已影响0人  好之者不如乐之者

1.滚动数组:可以减小内存占用,如在01背包问题中,为了做小内存的题,可以将数组的第一个参数大小改为2,因为在01背包的问题中每次的调用只涉及到两行的数据,因此就像菲波那切数列一样,01背包问题中的滚动数组每次两个交替保存即可。
2.bfs(广度优先搜索)的原理是每次搜到根节点距离相等的点,因此bfs的用处一般是计算最短路径。而dfs(深度优先搜索)则是每次都从根节点搜到叶节点,可以用来计算能达到某一目的的路径数量或是否存在路径使得其能够满足题目要求。
3.读题的时候需要仔细,有时题目给的要求是2s同时只有16MB,这时候就不能开过大的数组,不然会出现编译错误。
4.当程序出现segmentation fault:core dumped的错误时,往往是由于数组在调用的时候越界了,或者在main函数中开了过大的数组,此时数组需要设为全局变量。
5.文件输入文件输出的写法如下:

#include <cstdio>

using namespace std;

int main()
{
  freopen("file.in", "r", stdin);
  freopen("file.out", "w", stdout);
  return 0;
}

6.大数加法的问题:大数加法要按照正常的写法做,将个位保存在a[0]的位置上,以此类推,同时进位的标志最好不是对数组的下一位直接做加1操作,而是使用%符号和一个临时变量carry来保存进位数,同时在大数读取的时候,应该以字符串的方式读入,并对每一个字符s[i]进行-‘0’操作,因为对于直接转换(int)s[i],其转换成的数字是该字符(如‘9’)所代表的ASCll码,而非那个数字本身。

上一篇下一篇

猜你喜欢

热点阅读