LevOJ平台.sln
苯蒟蒻也没系统学过算法,群佬有更高级的算法一定要在评论区贴一下喵~
P1034 字符串的循环移位
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <iostream> #include <string> using namespace std;int main () { int n; cin >> n; string s; cin >> s; string temp1 = s.substr (0 , n); string temp2 = s.substr (n, s.length () - 1 ); string result = temp2 + temp1; cout << result << endl; return 0 ; }
P1042 手机短号
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 #include <iostream> #include <string> using namespace std;int main () { string phnumber; cin >> phnumber; cout << "6" << phnumber.substr (6 , 10 ) << endl; return 0 ; }
P1118 ISBN号
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include <iostream> using namespace std;char map[] = {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'X' };int main () { int n; cin >> n; while (n--) { string isbn; cin >> isbn; int sum = 0 ; int pos = 1 ; for (int i = 0 ; i < 11 ; i++) { if (isbn[i] == '-' ) { continue ; } sum += (isbn[i] - '0' ) * pos; pos++; } if (isbn[12 ] == map[sum % 11 ]) { cout << "Right" << endl; } else { cout << isbn.substr (0 , 12 ) + map[sum % 11 ] << endl; } } return 0 ; }
P1169 乒乓球
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <iostream> #include <string> using namespace std;void judge (string t, int rule) { int a = 0 , b = 0 ; for (int i = 0 ; i < (int )t.size () - 1 ; i++) { if (t[i] == 'E' ) break ; if (t[i] == 'W' ) a++; else if (t[i] == 'L' ) b++; if ((a >= rule && a - b > 1 ) || (b >= rule && b - a > 1 )) { cout << a << ":" << b << endl; a = 0 , b = 0 ; } } cout << a << ":" << b << endl << endl; }int main () { string t; getline (cin, t); judge (t, 11 ); judge (t, 21 ); return 0 ; }
P1202 字符串插入
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <iostream> #include <string> using namespace std;string func (const string &str, const string &substr) { char maxChar = 0 ; size_t maxCharIndex = 0 ; for (size_t i = 0 ; i < str.size (); ++i) { if (str[i] > maxChar) { maxChar = str[i]; maxCharIndex = i; } } string result = str.substr (0 , maxCharIndex + 1 ) + substr + str.substr (maxCharIndex + 1 ); return result; }int main () { string str; string substr; cin >> str >> substr; string result = func (str, substr); cout << result << endl; return 0 ; }
P1226 数字合并
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <vector> #include <string> #include <algorithm> #include <iostream> using namespace std;bool compare (const string &a, const string &b) { return a + b > b + a; }string func (vector<string> &nums) { sort (nums.begin (), nums.end (), compare); string ans; for (string s : nums) ans += s; return ans; }int main () { int n; cin >> n; vector<string> nums (n) ; for (int i = 0 ; i < n; i++) cin >> nums[i]; string ans = func (nums); cout << ans << endl; return 0 ; }
P2026 国王的演讲
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include <iostream> #include <string> #include <vector> #include <map> using namespace std;int main () { map<char , string> mp; string temp; int m, n; cin >> n; while (n--) { cin >> temp; mp[temp[0 ]] = temp; } cin >> m; vector<string> str (m) ; for (int i = 0 ; i < m; i++) { cin >> str[i]; str[i] = mp[str[i][0 ]]; } for (int i = 0 ; i < m; i++) { cout << str[i] << " " ; } cout << endl; return 0 ; }
P1131 子串
问题描述
解决方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 #include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std;string match (string str1, string str2) { int m = str1. size (); int n = str2. size (); vector<vector<int >> dp (m + 1 , vector <int >(n + 1 , 0 )); int mLen = 0 ; int end = 0 ; for (int i = 1 ; i <= m; ++i) { for (int j = 1 ; j <= n; ++j) { if (str1[i - 1 ] == str2[j - 1 ]) { dp[i][j] = dp[i - 1 ][j - 1 ] + 1 ; if (dp[i][j] > mLen) { mLen = dp[i][j]; end = i; } } } } string res = (mLen > 0 ) ? str1. substr (end - mLen, mLen) : "" ; return res; }int main () { int n; cin >> n; string str0; cin >> str0; n--; while (n--) { string str1; cin >> str1; string strFor = match (str0, str1); reverse (str1. begin (), str1. end ()); string strRev = match (str0, str1); if (strFor.size () >= strRev.size ()) str0 = strFor; else str0 = strRev; } cout << (str0. empty () ? 0 : str0. size ()) << endl; return 0 ; }
注 :
P1325 区间合并、P2045 数字蚯蚓已在LevOJ.sln-3中
第五期完结
看完点个赞再走嘛
_ _ E O F _ _ \_\_EOF\_\_
__ EOF __