2009年12月17日星期四

算法考试结束

不知道以后会不会忘了

活着

这部电影,我看了

2009年12月8日星期二

关于这么一个指针传参数的问题

今天在写一个函数,就是要重新给一个指针分配一块内存。比如
void renew(int * array, int b)
{
     delete [] array;
     int size = 2*b;
     array = new int[size];
     memset(array,13,sizeof(int)*size);
}
void main()
{
     int * array;
     int size = 13;
     array = new int [size];
     memset(array,0,sizeof(int)*size);
     renew(array);
     delete [] array;
}
结果胡折腾了一会,企图修改数组的内容,实际上毛用都没。后来哥悟到了,具体参考这里
不过哥哥有个比那文章稍好点的解决方法,那文章说真要用,就用int **。其实当然也可用一个指针的拷贝,这样具体代码都不用改,那么,请听题,如果修改renew函数的参数?
A) void renew( &(int * array), int b)
B) void renew( int &(*array), int b)
C) void renew( int &* array, int b)
D) void renew( int *& array, int b)

void renew(int *&array, int b)


2009年12月5日星期六

关于向量夹角的问题

昨天一个问题貌似没想通,太囧了,看起来貌似很简单。
就是三维空间中,给了两个向量,就它们之间的夹角。当然有内积是,然后acos是可以算出来的。不过这个角度是无视转向。两个步骤可以结局,首先是要找一个法向量;其次是假定在一个平面中,求个带正负的面积。

关于一种图,不知道它有没有确切定义

在做2-SAT的时候发现的。就是在一个有向图中,不断地加边,直到找不出这样的边。这样的边uv是指对某一个点u,通过一条路径能到达v。我想不起有没有这样的定义。反正有一点可以确定,就是如果有环就是强连通分支。

2009年12月4日星期五

关于NP证明

自己先不严谨总结了一下,证明一个问题是NP难。粗俗地说,就是别SB,要BS。
首先得有一个问题B,是已知的NP难,也就是说,它的解法至少是非多项式时间的。
然后我们要证明的是一个问题S,怎么证呢?
如果我们能找一个方法把B问题变成S问题,这个变换的方法得是多项式时间的。
这样就可以证明要解决S问题,也是至少得非多项式时间的。
这里关键就是要把已知的B问题变成S问题,而不是把S问题变成B问题。