文章
78
粉丝
0
获赞
0
访问
3.6k
(1)设计思想:将0到p-1的序列设为A,将p到n-1的序列设为B,则经过(AB)^-1 = B^-1A^-1,(B^-1)^-1(A^-1)^-1 = BA,这样就实现了循环左移操作。
(2)void reverse(int a[],int low, int high) { //将序列从low到high进行翻转
int temp = 0;
while (low < high) {
temp = a[low];
a[low] = a[high];
a[high] = temp;
low++;
high--;
}
}
void moveLeft(int a[], int p, int n) {
reverse(a, 0, n-1);
reverse(a, 0,p-1);
reverse(a, p, n - 1);
}
(3)时间复杂度:o(n) 空间复杂度:o(1)
评分及理由
(1)得分及理由(满分4分)
得分:4分
理由:学生的设计思想与标准答案一致,正确描述了通过三次逆置实现循环左移的思路,表述清晰。
(2)得分及理由(满分7分)
得分:5分
理由:学生的代码实现了三次逆置操作,但顺序与标准答案不一致(标准答案先逆置前p个元素,再逆置剩余元素,最后整体逆置;而学生先整体逆置,再逆置前p个元素,最后逆置剩余元素)。虽然逻辑正确,但顺序错误可能导致结果不正确(需进一步验证),因此扣2分。代码注释和关键步骤注释不足,扣1分。
(3)得分及理由(满分2分)
得分:2分
理由:学生正确分析了时间复...
登录后发布评论
暂无评论,来抢沙发