文章
95
粉丝
50
获赞
1
访问
11.7k

评分及理由
(1)得分及理由(满分3分)
学生给出的基本设计思想是“依次遍历三元组,采用穷举法,列出所有可能的三元组情况,再遍历比较所有可能的三元组的最小值”。这属于暴力枚举法,思路正确,但并非题目要求的“尽可能高效的算法”。由于题目要求“尽可能高效”,而暴力法效率较低,因此不能给满分。但设计思想本身是清晰的,且符合暴力法的逻辑。扣1分,得2分。
(2)得分及理由(满分8分)
学生根据设计思想给出了C语言代码,实现了三重循环遍历所有三元组并计算距离,符合暴力法的实现。但代码存在以下问题:
1. 函数参数中int n3误写为n3(缺少类型声明),属于语法错误,但根据上下文可判断为识别误写,不扣分。
2. 变量min初始化为0,而实际最小距离可能大于0(例如题目示例中最小距离为2),这会导致结果错误(如果所有距离都大于0,则返回0)。这是一个逻辑错误,应初始化为一个足够大的值(如INT_MAX)。扣2分。
3. 条件判断if(sum <= min)应为if(sum < min),但若min初始化为0且所有距离均大于0,则此条件不会执行,导致错误;若min初始化正确,使用<=虽不影响结果,但不够精确,不额外扣分。
4. 代码整体结构正确,实现了暴力法的核心逻辑。
综合以上,扣2分,得6分。
(3)得分及理由(满分2分)
学生正确给出了时间复杂度O(n³)和空间复杂度O(1),与暴力法分析一致。得2分。
题目总分:2+6+2=10分
登录后发布评论
暂无评论,来抢沙发