第五周的题目是动态规划数字三角形问题,然后有:
max(a,b)的问题
刚开始我是这样
#define max(a,b) (a>b)?a:b
但是这样的话在:dps[i][j] = max(dps[i+1][j]+data[i][j], dps[i+1][j+1]+data[i][j]);
运行是正确的但是这样写:
dps[i][j] = max(dps[i+1][j], dps[i+1][j+1])+data[i][j];
运行就不对
后来我改成:
int max(int a,int b)
{
return (a,b)?a:b;
}
再这样写:
dps[i][j] = max(dps[i+1][j], dps[i+1][j+1])+data[i][j];
就对了。
于是我就想#define与子函数的区别是:
我百度了一下原来不是区别的问题而是#define的问题#define不够硬容易出问题:
例如:
#define max(a,b) (a>b)?a:b
就可以写成#define max(a,b) (((a)>(b))?(a):(b))
这样就不会出错啦