文章
7
粉丝
0
获赞
2
访问
512
(1): 将数组中所有的数都异或起来,异或的答案就是只出现一次的值。
(2):
long long sum = 0;
for(int i = 1; i <= n; i++){
sum ^= a[i];
}
printf("%lld", sum);
(3):
所有数只需要遍历一遍,并且做一遍运算,时间复杂度 O(n)
评分及理由
(1)得分及理由(满分3分)
得分:0分
理由:题目要求相同元素一定相邻,但学生的解法使用了异或操作,这种方法适用于任意顺序的数组,没有利用题目给定的相邻条件,因此不符合题目要求的设计思想。
(2)得分及理由(满分8分)
得分:0分
理由:学生的代码实现使用了异或操作,虽然时间复杂度正确,但没有利用题目给定的相邻条件,属于逻辑错误。此外,代码中数组下标从1开始(`a[i]`),而题目中数组下标从0开始(`A(a_0, a_1, ..., a_{n-1})`),存在下标越界风险。
(3)得分及理由(满分2分)
得分:0分
理由:虽然学生正确分析了时间复杂度为O(n),但由于算法设计错误,时间复杂度分析的前提条件不成立,因此不得分。
题目总分:0+0+0=0分
登录后发布评论
暂无评论,来抢沙发