文章
8
粉丝
0
获赞
1
访问
555
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分
理由:代码实现了循环左移的功能,但存在以下问题:
(3)得分及理由(满分2分)
得分:2分
理由:时间复杂度和空间复杂度分析正确,与标准答案一致。
题目总分:3+6+2=11分
登录后发布评论
暂无评论,来抢沙发