摘要:
BFS有两种常见的形式:形式1:把初始点加入队列;while (队列非空) { 取出队头; 操作取出的点; 寻找周围符合条件的点加入队列;}形式2:操作初始点把初始点加入队列;while (队列非空) { 取出队头; 寻找周围符合条件的点,操作找到的点,然后加入队列;}这两种形式的差别就是新找到的点先插入队列还是先操作,看似没什么差别,其实有的时候效率差别非常大;举个栗子://BFS示例1:先操作后插入队列 void bfs(int x, int y, int n, int m, vector> &board) { static int dx[] = {-1, 1, 0, 0}; 阅读全文
摘要:
1.注意:头文件不应包含using声明。因为头文件的内容会拷贝到所有引用他的文件中去,对于某些程序来说,由于不经意间包含了一些名字,可能会产生名字冲突。2.string类型的读入:用cin读入string,忽略所有的前置空格、换行符、tab等,读入串,在此读到这些特殊字符时结束,读入的串中不包含这些特殊字符。getline读入时,一直到换行符结束。3.auto len = line.size();此时len的类型是string::size_type,size()函数返回一个无符号整形数,因此size_type是一种无符号整数类型,也可显式调用string::size_type a = 0;切记 阅读全文
摘要:
1.在算数表达式中最好不要使用char或bool,只有在存放字符或布尔值时才使用他们,因为char在有些机器上是有符号的,在一些机器上是无符号的,所以特别容易出问题,如果只表示一个不大的整数,那么明确他的类型是signed char或是unsigned char。2.关于相互赋值。如果按如下定义bool a = 10; int b = a; 那么b = 1,因为bool变量true类型算术运算时会被当成1,false为0。当我们把一个浮点数赋给一个整数时,会截尾处理。当把一个非0的书赋给bool变量是,值为true,否则是false。当把整数赋给浮点数时,若超过浮点数的精确表示范围,会有精度损 阅读全文
摘要:
什么?python简单易懂好学可读性高灵活耐用扩展好?预测下面几个小段落的输出,来看看这个能过几关?============================Stage 1预测下列输出def add_list(p): p = p + [1]p1=[1,2,3]add_list(p1)print p1def add_list(p): p += [1]p2=[1,2,3]add_list(p2)print p2==============================Stage 2预测输出a=[]b={'num':0,'sqr':0}for i in [1,2,3] 阅读全文