PAT乙级-1061. 判断题(15)

1.可以的答案

#include 
#include 
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
    int n=0;// 学生数量 
    int m=0;// 题的数量
    vector<int> question_scores_vect;
    vector<int> right_answers_vect;
    cin>>n>>m;
    for(int i=0;iint score = 0 ;
        cin>>score;
        question_scores_vect.push_back(score);
    }
    for(int j=0;jint answer = 0 ;
        cin>>answer;
        right_answers_vect.push_back(answer);
    }
    // 依次读取学生答卷,读到就判,马上输出。
    while(n--){//对于每一个学生 
        vector<int> students_answers;
        int student_score = 0;
        for(int k=0;k// 每一个问题 
            int s_answer=0;
            cin>>s_answer;
            if(s_answer==right_answers_vect[k]){
                student_score+=question_scores_vect[k];
            }
        }
        cout<return 0;
}

2.思考改进

本题目在解题时,使用了vector,但是并没有使用迭代器的东西,所以感觉有点多余。应该使用动态数组的方式来解题,故本题应为如下代码:

#include 
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
    int n=0;// 学生数量 
    int m=0;// 题的数量
    cin>>n>>m;
    int* question_scores_vect = new int[m];// 问题分数数组 
    int* right_answers_vect = new int[m];// 正确答案数组 
    // 初始化问题分数数组    
    for(int i=0;icin>>question_scores_vect[i];
    }
    // 初始化正确答案数组 
    for(int j=0;jcin>>right_answers_vect[j];
    }
    // 依次读取学生答卷,读到就判,马上输出。
    while(n--){//对于每一个学生 
        int student_score = 0;// 该生获得成绩 
        for(int k=0;k// 每一个问题 
            int s_answer=0;
            cin>>s_answer;
            if(s_answer==right_answers_vect[k]){
                student_score+=question_scores_vect[k];
            }
        }
        cout<delete[] question_scores_vect;
    delete[] right_answers_vect;
    question_scores_vect=NULL;
    right_answers_vect=NULL;
    return 0;
}

3.Tips

需要注意的是,很多语句需要像写双引号,左括号右括号那样成对出现的。比如写申请动态数组,申请和释放要成对写,写完了这个再把光标移到中间继续填写里面的内容。这个在之后的编程学习中也要格外注意。如果你在学习C++的时候就养成了申请必释放的好习惯,那么在你写Java、JS、Python的io操作的时候就会较少出现资源占用的问题。我认为,算法题目并不是在比拼智力,而是通过一个非常抽象的极简环境来教育我们在编程中需要注意到的问题。希望大家编程顺利,没有bug。

你可能感兴趣的:(C++,Algorithm)