文章

172

粉丝

0

获赞

0

访问

26.1k

头像
2010年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年10月3日 20:49
阅读数 179

1)由题可知,可以通过逆置思想,先把序号0~(P-1)的逆置,再把P~(n-1)的逆置,最后再把整个数组逆置。逆置可以通过定义函数Reverse()实现。

2)

void Reveres(int R[], int beg, int end){
    int temp;
    int mid = (end-beg+1)/2;
    for(int i; i < mid; ++i){
        temp = R[beg+i];
        R[beg+i]=R[end-i];
        R[end-i]=temp;
    }

}

void reverseP(int R[], int n,int p){
    Reverse(R,0, p-1);
    Reverse(R,p, n-1);
    Reverse(R,0, n-1);

}

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


评分及理由

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

得分:4分

理由:学生准确描述了算法的基本设计思想,即通过三次逆置操作实现循环左移,与标准答案完全一致。

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

得分:5分

理由:
1. 函数名拼写错误:Reverse函数在声明时写成了"Reveres",但在调用时写成了"Reverse",这会导致编译错误(-1分)
2. 循环变量i未初始化:在Reverse函数的for循环中,变量i未初始化就直接使用,这会导致未定义行为(-1分)
3. 算法逻辑正确:除了上述两个错误外,算法的核心逻辑与标准答案一致,逆置操作和三次调用的顺序都正确

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

得分:2分

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

题目总分:4+5+2=11分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发