马上要参加IEEE编程比赛了,找两道简单的题目练习一下。
首先贴上自己写的代码:
#include#include #include #include using namespace std; #include #include int find_position(vector & alpha, char target) { int nPosition=0; vector ::iterator iElement = find(alpha.begin(), alpha.end(),target); if (iElement != alpha.end()) { nPosition = distance(alpha.begin(), iElement); } return nPosition; } void compare_string(string& a, int len_a, string& b, int len_b, vector & alpha) { int length = len_a > len_b ? len_b:len_a; for (int i = 0; i < length; i++) { if (find_position(alpha,a[i]) > find_position(alpha,b[i])) { string temp = a; a = b; b = temp; return; } else if (find_position(alpha, a[i]) < find_position(alpha, b[i])) { return; } } if(len_a <= len_b){ return; } else{ string temp = a; a = b; b = temp; return; } } int main(int argc, char* argv[]) { vector alpha; string alpha_str; cin>>alpha_str; string temp=alpha_str; for(unsigned i=0;i >N; for (unsigned i = 0; i < alpha_str.size(); i++) { alpha.push_back(alpha_str[i]); } vector example(N); for (int i = 0; i < N; i++) { cin>> example[i]; } for (unsigned i = 0; i < example.size(); i++) { for (unsigned j = example.size() - 2; j >= i; j--) { compare_string(example[j], example[j].size(),example[j + 1], example[j+1].size(),alpha); if(j==0) break; } } for (unsigned i = 0; i < example.size(); i++) { cout << example[i]< 改来改去通过率也只有百分之七十,因为用的是冒泡排序,时间复杂度较高,有百分之三十的用例是超时的。在我修改的过程中一个叫Nickel的哥们用C++提交了一版感觉挺不错的,下面是他的代码:
#include#include #include #include 对比感觉自己的思维方式,编程技巧和一些常用的函数都很欠缺。
这次比赛也不指望得奖,自己还是有自知之明的,只希望能够借这个机会长长见识,养成刷题和做记录的好习惯。



