文章

78

粉丝

0

获赞

0

访问

3.6k

头像
2010年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年7月27日 17:44
阅读数 58

(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分

理由:学生代码逻辑基本正确,但存在以下问题:
1. 函数moveLeft中的逆置顺序错误,应先逆置前p个元素,再逆置剩余元素,最后逆置整个数组。学生的代码顺序与标准答案相反,属于逻辑错误。
2. 代码注释较少,但关键逻辑清晰,扣分较少。

(3)得分及理由(满分2分)

得分:2分

理由:学生正确分析了算法的时间复杂度和空间复杂度,与标准答案一致。...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发