wittyResry / myIssue

My issue mark down^_^ 欢迎吐槽,讨论~~
https://github.com/wittyResry/myIssue/issues
The Unlicense
5 stars 1 forks source link

daily practice历史遇到的出错点 #17

Open wittyResry opened 8 years ago

wittyResry commented 8 years ago
  1. 初始化,非空,设初值。
  2. &&和||的选择,特别是判断逻辑。
  3. 局部变量覆盖了全局,比如在局部变量设置了一个和全局变量一样的名称,把全局变量覆盖了,但是自己没有觉察出来。
wittyResry commented 8 years ago
  1. 注意下标越界,下标如何设计。
wittyResry commented 8 years ago
  1. 不要照搬别人的代码,抄容易抄出问题。
  2. 包权限问题,以及一些常量要定义出来。
  3. 代码注释严谨性。
wittyResry commented 8 years ago
  1. 思考的方案,要多优化几个版本后再考虑输出。多考虑一些可能发生错误的情况
wittyResry commented 8 years ago
  1. 有错误被拦截的地方,一定要打错误日志,方便查问题。
wittyResry commented 8 years ago
1. 判断条件,缺判断条件!!!
2.数据量判断,数组越界。
wittyResry commented 7 years ago
  1. 线程变量清空要配对。
Resry commented 7 years ago
  1. 变量覆盖问题。

image

wittyResry commented 7 years ago
  1. 忘记条件,并且y -> y2 image
wittyResry commented 7 years ago

||和&& /2和>>1等价,而不是>>2(不要一边参考别人代码一边改不经过思考) xx和x少了一个x,可以通过写出来的判断公式不对称看出来。

diff --git a/SRM 674/FindingKids.cpp b/SRM 674/FindingKids.cpp
index a785113..437127d 100644
--- a/SRM 674/FindingKids.cpp   
+++ b/SRM 674/FindingKids.cpp   
@@ -46,10 +46,10 @@ void sol() {
             int l = 0;
             int r = n + 1;
             while (l < r) {
-                int mid = (l + r + 1) >> 1;
-                int xx = x - (mid >> 2);
-                int yy = y + ((mid + 1) >> 1) - 1;
-                if (xx < 0 || y >= L.size() || abs(R[xx] - L[yy]) / 2. > ti[i]) r = mid - 1; else l = mid;
+                int mid = (l + r + 1) / 2;
+                int xx = x - mid / 2;
+                int yy = y + (mid + 1) / 2- 1;
+                if (xx < 0 || yy >= L.size() || abs(R[xx] - L[yy]) / 2. > ti[i]) r = mid - 1; else l = mid;
             }   
             if (l % 2 == 0) {
                 ans[i] = abs(R[x - l / 2] + ti[i]);
wittyResry commented 7 years ago

c+$和c+^ vim删除 o 在当前行下方新启一行,并进入插入模式。 O 在当前行上方新启一行,并进入插入模式。 I insert 在当前行的第一个非空白字符之前插入

v visual,可视,以字符为单位移动 V 可视,以行为单位移动

Ctrl + v    可视,以块为单位移动
首先将光标移动到要该代码块第一行的行首字母上,进入可视块模式,
然后移动光标到该代码块的最后一行的行首字母上,这时会高亮显示一列。
之后键入 I,注意不是i,此时信息区显示的是插入模式了,
然后键入注释符"//",将第一行注释掉,而其他行没有变化。
不用着急,最后键入Esc退回到普通模式。 
1. 分割窗口
:sp split,水平分割窗口
:vs  vertical split,垂直地分割窗口可视块模式来完成了。

2. 窗口切换
Ctrl + w + [h, j, k, l]
Ctrl 在Vim中"^"一般表示Ctrl按键
w   window
h,j,k,l 就是上下左右四个方向

3. 关闭窗口
Ctrl + w + [c]  关闭当前窗口
Ctrl + w + [o] 关闭其他窗口
wittyResry commented 7 years ago
wittyResry commented 6 years ago
wittyResry commented 5 years ago
wittyResry commented 2 years ago

边界值判断,入参为空判断,越界异常抛出