文章

8

粉丝

0

获赞

1

访问

555

头像
- 第42题回答
数据结构
发布于2025年6月15日 14:52
阅读数 76

1.新建一个数组A,将R中前P个元素依次保存到R当中,之后再将R中后P个元素左移P位,最后再遍历一遍A数组,把值拼接到R后即可

2.

void func(int R[],int n,int p){
    int A[p];//新建一个数组A用来保存前P个元素
    for (int i = 0; i < p; i++) {
        A[i] = R[i];//先将R中前P个元素依次保存到R当中
    }
    for (int i = p; i < n; i++) {
        R[i-p] = R[i];//之后再将R中后P个元素左移P位
    }
    for (int i = 0; i < p; i++) {
        R[i+p] = A[i];//最后再遍历一遍A数组,把值拼接到R后即可
    }
}

 

3.时间复杂度O(n),空间复杂度O(n)


评分及理由

(1)得分及理由(满分4分)

得分:3分

理由:学生的设计思想基本正确,使用了辅助数组的方法实现循环左移,但描述不够清晰,未明确说明“后P个元素左移P位”的具体含义(应为“后n-P个元素左移P位”)。扣1分。

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

得分:6分

理由:代码实现了循环左移的功能,但存在以下问题:

  • 注释中“后P个元素左移P位”应为“后n-P个元素左移P位”,逻辑描述不准确,扣1分。
  • 代码逻辑正确,但注释不够严谨。

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

得分:2分

理由:时间复杂度和空间复杂度分析正确,与标准答案一致。

题目总分:3+6+2=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发