算法 mismatch学渣抄袭学霸答案抄串了"/>
C++STL算法 mismatch学渣抄袭学霸答案抄串了
XueBa.size() 是7
XueZha.size() 是6
#include<iostream>
#include<cstdlib>
#include<vector>
#include<list>
#include<algorithm>#define is_in_ABCD(s) (Select_A ==s || Select_B == s || Select_C == s || Select_D == s)using namespace std;enum Select
{Select_A = 'A',// 三长一短选择ASelect_B = 'B',// 三短一长选择BSelect_C = 'C',// 长短不一选择CSelect_D = 'D',// 两长两短选择DSelect_NULL = ' '// 宁愿空着也不蒙
}Select_t;typedef int no;//题号
typedef pair<no, Select> Question;int main()
{vector<Question> XueBa;// 这是学霸的卷子XueBa.push_back(Question(1, Select_A));// 第1题选AXueBa.push_back(Question(2, Select_B));XueBa.push_back(Question(3, Select_C));XueBa.push_back(Question(4, Select_NULL));// 这题我会,不做,空着,就是玩XueBa.push_back(Question(5, Select_D));XueBa.push_back(Question(6, Select_B));XueBa.push_back(Question(7, Select_A));cout << "学霸的卷子: [\t";for_each(XueBa.begin(), XueBa.end(), [](Question q) {cout << (char)q.second << "\t"; });cout << "]" << endl;list<Question> XueZha;// 这是学渣的卷子copy_if(XueBa.begin(), XueBa.end(), back_inserter(XueZha), [](Question q) ->bool {return is_in_ABCD(q.second);});cout << "学渣的卷子: [\t";for_each(XueZha.begin(), XueZha.end(), [](Question q) {cout << (char)q.second << "\t"; });cout << "]" << endl;pair<vector<Question>::iterator, list<Question>::iterator> result = mismatch(XueBa.begin(), XueBa.end(), XueZha.begin());if (result.first != XueBa.end()){//cout << "在第 " << distance(XueBa.begin(),result.first)+1 << " 题错了" << endl;cout << "在第 " << result.first->first << " 题错了" << endl;if ((is_in_ABCD(result.first->second))){cout << "学霸的答案是" << (char)result.first->second << endl;}else if(Select_NULL == result.first->second){cout << "学霸空着没答,估计是题目太难了" << endl;}cout << "学渣的答案是" << (char)result.second->second << endl;}else{cout << "抄的都会,蒙的都会,咱是隐藏高级玩家" << endl;}return EXIT_SUCCESS;
}
更多推荐
C++STL算法 mismatch学渣抄袭学霸答案抄串了
发布评论