简单算法题
做的是牛客网上的题目
测试附加代码
在测试代码进行运行的时候需要对多组数据进行测试,所以在程序里面需要加上对数据流结尾的判断。
原来是这么写的:
while(1) {...}
后来成了:
while (scanf("%d",&num)) {...}
然而讲道理的话应该是下面这样:
while (scanf("%d",&num) != EOF) {...}
EOF代表 END OF FILE
0值
str = NULL;
str[i] = 0;
在指针判断的时候才需要用NULL
字符串
- gcc中字符用单引号
- 字符串中含有空格时:get()函数没有内存保护,而scanf不读取空格;用fgets(* str, length, stdin)函数输入即可(最后的回车也会被输入到数组中)
- 用scanf(“%[^\n]”, str) 就可以接受除了回车之外的符号了,这里支持简单的正则表达式
gcc warning
- warning: control reaches end of non-void function(函数返回值未设置)
背包问题–动态规划
基于下面的迭代式子(如果新增的物品所能够得到的收益大于原来, 就更新状态)
f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] }
堆、栈
参见 任我行的博客堆栈,堆栈,堆和栈的区别。