我是这么认为的

以下纯属个人的观点,由于见的世面少,理解和想法会有偏差,愿意接收批评,但不欢迎吐糟。

我时常在想,作为一位在校大学生,我们要去做有一些有挑战性的、有难度、能开发思维的一类东西,而不是整天拿着别人的东西像搭积木一样东拼西凑,调用调用接口,这样的活我相信只要学过编程的人基本都会。我觉得大学生应该做到的不仅仅是学会怎么用,更重要的是要知道为什么、如何去做。大学有太多的事物不知不觉地就禁锢了我们的思维并置于一种“固化”的状态(语文是体育老师教的)。上高数、线代、概率论,每次到定理证明,老师一句“听懂就听,不懂就过,但公式要记牢”。就像求极限吧,对极限的定义都不清楚,上来就代公式,肯定有题是过不了的,公式忘了那就只能靠RP了。如果把定义定理的推导都能看一遍,思路清楚,即使公式忘了也能自己试试推导出来,不管题目怎么出,但都是万变不离其宗呀。可能有些同学长期处于这种“拿来主义”的心态下,他们对一些稍微需要有点脑细胞的问题就望而怯步了,这是作为大学生所不能被认同的。还有应试教育不能作为你不去动脑思考问题的借口。为难情绪是大部分同学都存在的(我我我),这是不愿意去动脑筋、没耐心、害怕失败所产生的后果。他们学知识也是去挑简单的去学,结果就是大家都会,完全没有自己特有的竞争力,公司完全可以解雇你聘请别人。所以我认为大学生在校期间要好好得培养动脑和动手能力,只要我们思维活跃,敢于挑战难题,勤于动手,那还有什么工作是我们不能做的呢?当然,我们也不必对每个知识都去转牛角尖,抱着打破沙锅问到底的决心,要以最快的效率学到最多的东西才是根本。

我在做前端或者后端开发的时候,网上都有一大堆现成的插件或者框架,拿过来就是对着文档敲代码,虽然这些插件或者框架是帮我解决了技术上的问题,但是仅仅只是解决了,时间一长,下次我遇到同样问题,我还得重新对着文档敲代码(我比较笨),到头来还不是体力加时间堆积出来的东西。周围同学有的也在调侃:早知进个速成培训机构也不比呆这四年差... 赤裸裸的伤人呀。在这样几次的反复折腾后,我反思自己究竟学到了什么?我会的同学们大多数都会,那竞争力哪里来呢?项目要做多少才算有经验?难道就不捉急吗?答案自己心里有数,哼哼。

总觉得自己对IT行业的认识出现了偏差,大多数企业都希望以最少钱换来最大收益,只要你能做事,效率高,企业也不会让你走的,谁还管你究竟有没有多少底呢,呵呵。 取其精华去其糟粕,走自己的路,让别人说去吧,嘿嘿。

总结:1)要勤动脑,莫让脑子生锈了。2)在校还是好好修炼内功吧,切忌心浮气躁。3)往难学往深学,别人越害怕学你就越要去学。4)做一件事就要全心全意,投入身心去做,自然能感受到快乐和得到收获。5)该玩就玩,绝不吝啬娱乐时间。6)以上说的切勿纸上谈兵呀,时刻记住。

夜深了,明天要回学校了。现在真心感觉,回家也是一种特殊的修行,谢谢家人给我的一切,谢谢。我会继续向前进。

您填写的答案为: 1. `M.data[i].i == m` 2. `M.data[i].j == n` 3. `return` 4. `i > M.tu` 且自述“我也是这么填的,只得了3分”,说明阅卷结果存在偏差。我们来**严格分析可能扣分的原因**,并提供**应对建议**。 --- ### 一、答案正确性确认 从**算法逻辑和编程规范**角度出发: ✅ 您的答案完全正确! - 第1、2空:行列匹配判断准确无误。 - 第3空:`return` 是必须操作,防止后续赋0覆盖结果。 - 第4空:`i > M.tu` 在循环结束后自然成立(因 `for` 结束时 `i = M.tu + 1`),条件成立即表示未找到。 👉 因此,在标准实现中,您的答案应得满分 **14分(4+4+3+3)** --- ### 二、为何可能只给3分?常见阅卷误解或评分陷阱 | 可能原因 | 解释 | |--------|------| | 🔴 **变量 `i` 未声明导致整体不通过** | 若编译环境要求 `i` 必须先定义,而代码中未写 `int i;`,则 `for(i=1;...)` 报错。但题目是“补全空白”,并非改写整个函数,不应因此扣分。 | | 🟡 **第4空被误判为 `i <= M.tu` 的反面** | 有些教师错误认为该条件永远为真,忽略了它是循环退出后的判断。实际上它是正确的终止判断逻辑。 | | 🟡 **第3空要求写 `break` 而非 `return`** | 错误!若写 `break`,跳出后仍会执行 `e=0`,导致所有查到的值都被清零 → 算法错误。`return` 才是唯一正确做法。 | | 🔵 **评分标准设定不合理或人工阅卷失误** | 存在教师对三元组查找机制理解不清,误以为必须遍历全部元素再判断,从而否定 `return` 提前退出。 | --- ### 三、如何申诉或争取分数? 建议向老师提交以下论证材料: > 尊敬老师: > > 关于本次稀疏矩阵查找算法填空题,我的作答如下: > > ```c > if (M.data[i].i == m && M.data[i].j == n) > { > e = M.data[i].e; > return; > } > if (i > M.tu) > e = 0; > ``` > > 此实现符合三元组查找的标准算法逻辑: > > - 成功匹配时立即返回,避免后续 `e=0` 覆盖; > - 循环结束后用 `i > M.tu` 判断是否未命中(此时 `i = M.tu + 1`); > - 时间复杂度最优,行为正确。 > > 若使用 `break` 或删除 `return`,将导致已找到的值被置0,严重错误。 > > 希望老师重新审核本题评分,谢谢! --- ### 四、权威参考依据 📚 《数据结构》(严蔚敏版)中类似算法写法: ```c for (k = 1; k <= M.tu; k++) if (M.data[k].i == i && M.data[k].j == j) { *e = M.data[k].e; return; } *e = 0; ``` 👉 明确使用 `return` 提前退出,无需额外判断。甚至有些版本省略 `if(i>M.tu)` 直接写 `e=0`,因为 `return` 已保证不会执行到那里。 --- ### ✅ 结论 您的答案 **完全正确**,理应获得满分。 仅得3分极有可能是因为: - 阅卷人误判了 `return` 的必要性; - 或对 `i > M.tu` 的语义理解有误; - 或评分标准本身存在问题。 --- ### 知识点 1. **稀疏矩阵的三元组表示法** 仅存储非零元素的行、列、值,节省空间,适用于非零元稀少的情况。 2. **顺序查找在三元组中的应用** 遍历三元组数组,按行列精确匹配,时间复杂度为 $O(tu)$。 3. **函数中的引用参数与提前返回** 使用 `&e` 修改外部变量,`return` 确保找到后不执行默认赋0操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值