
错误笔记
henuzxy
已经成为刷题过千的男人,即将成为cf 1900分的男人。
展开
-
为什么全局变量没有发生变化?
今天在nyoj上做一道关于最大岛屿时,我遇到了一个问题,就是在dfs后我的一个全局变量没有发生变化,结果让我调了半天,最后才发现问题。 希望你能从我的错误中找到你想要的答案。 如下代码#include<stdio.h>int num;void dfs(int cur,int num)//注意虽然这里变量也是num但它却是这个函数的局部变量 { if(cur) num原创 2017-02-16 17:03:54 · 2931 阅读 · 0 评论 -
全局变量和局部变量,2017.2.19
因为全局变量是存储在静态存储区分配的,这个空间很大 局部变量是在栈空间上分配的,栈空间没那么大,太大了会溢出转载 2017-02-19 15:12:35 · 530 阅读 · 0 评论 -
多组样例输入如何结束(即读取到文件结尾)
在刚接触oj时看到样例都是多组的输入但不知道何时结束读取,其实就是在while里加写东西 如下两种方法#include<stdio.h>#include<string.h>#include<math.h>int main(void){ int n; while(~scanf("%d",&n))//在这里加一个取反符号就是table上面的那个键 { }原创 2017-03-18 21:53:05 · 12023 阅读 · 2 评论 -
关于scanf和cin读取字符的错误
昨天又在比赛时因为一个读取字符的错误,耽误了,人生处处是大坑啊。 用scanf读取地图字符时,如果是单个字符一定是%c前面前面前面加个空格,注意是前面,这样可以过滤掉回车的空白字符。 当然在数据范围比较小时,最好用cin来读取字符,虽然慢点,但好歹不会出错啊。最后再说一句,好端端的搞啥子ACM嘛。原创 2017-04-07 22:21:38 · 653 阅读 · 0 评论 -
关于数据溢出的情况
注意编译器在不考虑类型时的运算范围是int的,如 long long int x = INT32_MAX + 1; cout << x << endl;这段代码结果就是-2147483648很显然就是int溢出了,所以 编译器在进行右侧运算时在整数的范围时int的,而在小数的范围是double,这点需要注意,我们应该是先给赋值,然后再通过x进行运算可以了。原创 2017-07-31 10:52:28 · 4332 阅读 · 0 评论 -
为什么Floyd算法中k必须放在最外层
https://www.zhihu.com/question/30955032 可以看下知乎这个问题。 我之前一直以为我明白了这个算法,结果发现自己只是会打模版而已,这个算法的实际是动态规划 这个解释的非常好啊,就是知乎上的最高票答案,你要知道他是从上一层k转移过来的所以当前的f[i][j]都应该是完成上一层动态规划的,如果k不是在最外层,那么f[i][j]就不是完成上一层动态规划的后的状态,有可原创 2017-08-23 14:43:16 · 3499 阅读 · 0 评论 -
关于计数中断循环的一些错误思考
for(int i=1;i<=N;++i){ if(某个条件) Count++; if(Count == K) break; }对于这个代码,我们要注意这个是先进行条件判断,再进行计数判断。如果存在刚开始就已经符合K了的话,这种就会少考虑了。同样,如果是这样for(int i=1;i<...原创 2018-07-27 10:08:08 · 418 阅读 · 0 评论 -
为什么循环里的gets()和fgets()在前面有一个scanf时,会跳过第一个的输出
今天在刷郑州轻工业oj上的题是碰到了一个关于字符串的,本来是水题一道十分钟就搞定的,结果卡了我一个小时。有这样一段代码int main(void){ int n; char s[100] [100]; scanf("%d",&n); for(i=0;i<n;i++) gets(s[i]); return 0;}当我给...原创 2016-12-10 23:45:32 · 3378 阅读 · 12 评论 -
一些数学几何知识和小技巧
发现自己几何sb,还是总结一下已知三点求圆心,但三点不能共线Point Getcir(Point A,Point B,Point C){//给予三个点,求圆心。 double a = 2*(B.x - A.x); double b = 2*(B.y - A.y); double c = (B.x*B.x+B.y*B.y) - (A.x*A.x+A.y*A.y);...原创 2017-11-12 14:40:29 · 559 阅读 · 0 评论