目录
1、HJ97 记负均正
2、HJ13 句子逆序
3、HJ37 统计每个月兔子的总数
4、HJ31 单词倒排
5、HJ36 字符串加密
6、HJ34 图片整理
7、HJ105 记负均正II
8、HJ3明明的随机数
9、HJ17 坐标移动
10、HJ35 蛇形矩阵
11、HJ38 求小球落地5次后所经历的路程和第5次反弹的高度
12、HJ52 计算字符串的编辑距离
13、HJ62 查找输入整数二进制中1的个数
14、HJ108 求最小公倍数
15、HJ32 密码截取
16、HJ22 汽水瓶
17、输出单向链表中倒数第k个结点
1 、 HJ97 记负均正
C++ #include <iostream> using namespace std; #include <bits/stdc++.h> int main(){ int n; cin>>n; int cnt = 0; int sum = 0; double average; int notNeg = n; while (n--) { double a; cin>>a; if(a<0)cnt++; if(a>0)sum+=a; if(a==0)notNeg--; } if(sum==0)average = 0.0; else average = (sum*1.0)/(notNeg-cnt); cout << cnt << " " << fixed << setprecision(1) << average <<endl; // cout<<cnt<<" "<<average<<endl; return 0; }
cout << cnt << " " << fixed << setprecision(1) << average <<endl;
2 、 HJ13 句子逆序
C++ #include <iostream> #include <string> #include <vector> using namespace std; string converse( vector<string> s){ vector<string>ans ; for(int i = s.size()-1;i>=0;i--){ ans.push_back(s[i]); } string res; for(int i = 0;i<ans.size();i++){ res = res+ans[i]; res = res + " "; } return res; } int main() { string s; vector<string>vec; while (cin>>s) { vec.push_back(s); } string ans = converse(vec); cout<<ans<<endl; return 0; }
3 、 HJ37 统计每个月兔子的总数
C++ #include <iostream> #include<vector> using namespace std; int TotalRab(const int& mounth) { vector<int>dp(mounth + 1); dp[1] = 1; dp[2] = 1; dp[3] = dp[1] + 1; for (int i = 3; i < mounth + 1; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[mounth]; } int main() { int n; cin >> n; cout<<TotalRab(n)<<endl; } // 64 位输出请用 printf("%lld")
4 、 HJ31 单词倒排
C++ #include <iostream> #include <sstream> #include <vector> using namespace std; void converse(const vector<string>& s) { int n = s.size(); for(int i = 0;i<s.size();i++){ cout<<s[n-1-i]<<" "; } cout<<endl; } int main() { string str; vector<string>contain; getline(cin,str); // 从标准输入读取一行文本,并存储在 str 中 for (int i = 0; i < str.size(); i++) { if (!isalpha(str[i])) { str[i] = ' '; } } stringstream input(str); //分割字符串为单词 while (input>>str) { //input >> word 会从 input 中读取一个单词,直到遇到空格、制表符或其他空白字符 contain.push_back(str); } converse(contain); }
5 、 HJ36 字符串加密
C++ #include <iostream> #include <string> #include <vector> #include <unordered_set> using namespace std; string CodeKey(string s1, string s2) { unordered_set<char>light; vector<char>light_new; // 去除重复字符 for (int i = 0; i < s1.size(); i++) { if (light.find(s1[i]) == light.end()) { light.insert(s1[i]); light_new.push_back(s1[i]); } } vector<char>ortable = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; vector<char>table_new; for (int i = 0; i < light_new.size(); i++) { table_new.push_back(light_new[i]); } for (int i = 0; i < ortable.size(); i++) { if (light.find(ortable[i]) != light.end()) { continue;; } table_new.push_back(ortable[i]); } vector<int>pos; for (int i = 0; i < s2.size(); i++) { for (int j = 0; j < ortable.size(); j++) { if (s2[i] == ortable[j]) { pos.push_back(j); } } } vector<char>ans; for (int i = 0; i < pos.size(); i++) { ans.push_back(table_new[pos[i]]); } string result; for (auto s : ans) { result += s; } return result; } int main() { string a; string b; cin >> a; cin >> b; cout << CodeKey(a, b) << endl; }
6 、 HJ34 图片整理
C++ #include <iostream> #include<algorithm> using namespace std; int main() { string s; cin>>s; sort(s.begin(),s.end()); cout<<s<<endl; return 0; }
7 、 HJ105 记负均正 II
C++ #include <iostream> #include<vector> #include <bits/stdc++.h> using namespace std; void jfjz(vector<int> nums){ int cnt = 0; double sum = 0; int n = nums.size(); for(auto num:nums){ if(num<0){ cnt++; } if(num>=0){ sum+=num; } } cout<<cnt<<endl; double average; if(n-cnt==0){ average = 0; } else { average = sum/(n-cnt); } cout<< fixed << setprecision(1)<<average<<endl; } int main() { int num; vector<int>nums; while (cin>>num) { nums.push_back(num); } jfjz(nums); return 0; }
8 、 HJ3 明明的随机数
JavaScript #include <iostream> #include<set> using namespace std; int main() { int a; cin>>a; int num; set <int>s; while (cin>>num) { s.insert(num); } for(auto number:s){ cout<<number<<endl; } return 0; }
9 、 HJ17 坐标移动
JavaScript #include <cctype> #include <iostream>#include<cstdlib> using namespace std; bool isNum(string s){ for(auto num:s){ if(!isdigit(num)) return false; } return true; } int main() { string s; int x = 0; int y = 0; while(getline(cin,s,';')){ if(s.empty()){ continue; } string s1 = s.substr(1); if(isNum(s1)&&s1.length()<=2){ switch(s[0]){ case 'A': x -= stoi (s1); break; case 'D': x += stoi (s1); break; case 'W': y += stoi(s1); break; case 'S': y -= stoi(s1); break; default: break; } } } cout<<x<<","<<y<<endl; }
10 、 HJ35 蛇形矩阵
C++ #include <iostream> #include<vector> using namespace std; int main() { int n; cin>>n; vector<vector<int>> vec(n,vector<int>(n)); int a = 0; for(int i = 0;i<n;i++){ for(int j=0;j<=i;j++){ vec[i-j][j] = ++a; } } for(int i = 0;i<n;i++){ for(int j = 0;j<n-i;j++){ cout<<vec[i][j]<<" "; } cout<<endl; } return 0; } // 64 位输出请用 printf("%lld")
11 、 HJ38 求小球落地 5 次后所经历的路程和第 5 次反弹的高度
C++ #include <iomanip> #include <iostream> using namespace std; int main() { int high; cin>>high; cout<<fixed<<setprecision(3)<<2.875*high<<endl; cout<<fixed<<setprecision(6)<<0.03125*high<<endl; } // 64 位输出请用 printf("%lld")
12 、 HJ52 计算字符串的编辑距离
C++ #include <iostream> using namespace std; int Distance(string s1,string s2){ int f[1001][1001]; int n = s1.size(); int m = s2.size(); for(int i = 0;i<n;i++){ f[i][0] = i; } for(int i = 0;i<m;i++){ f[0][i]=i; } for(int i = 1;i<n;i++){ for(int j = 1;j<m;j++){ f[i][j] = min(f[i-1][j]+1,f[i][j-1]+1); if(s1[i]!=s2[j]){ f[i][j] = min(f[i][j],f[i-1][j-1]+1); } else { f[i][j] = min(f[i][j],f[i-1][j-1]); } } } return f[n-1][m-1]; } int main() { string s1 , s2; cin >>s1; s1 = ' '+s1; cin >>s2; s2 = ' '+s2; cout<<Distance(s1, s2)<<endl; return 0; } // 64 位输出请用 printf("%lld")
13 、 HJ62 查找输入整数二进制中 1 的个数
C++ #include <iostream> using namespace std; int Binary(int num){ int ans = 0; while (num!=0) { if(num%2!=0) ans++; num /= 2; } return ans; } int main() { int num; while (cin>>num) { cout<<Binary(num)<<endl; } }
14 、 HJ108 求最小公倍数
C++ #include <iostream> using namespace std; int MinBeishu(int a , int b){ int ans; for(int i = 1;i<=b;i++){ for(int j =1;j<=a;j++){ if(a*i==b*j){ ans = a*i; return ans; } } } return ans; } int main() { int a,b; cin>>a; cin>>b; cout<<MinBeishu(a,b)<<endl; }
15 、 HJ32 密码截取
C++ #include <iostream> using namespace std; int CodeGet(string s) { int maxlength = 0; int n = s.size(); for (int i = 1; i < n; i++) { int low = i - 1; int high = i; while (low >= 0 && high < n && s[low] == s[high]) { low--; high++; } maxlength = max(maxlength, high - low - 1); //high - low +1-2 low = i - 1; high = i + 1; while (low >= 0 && high < n && s[low] == s[high]) { low--; high++; } maxlength = max(maxlength, high - low - 1); } return maxlength; } int main() { string s; cin >> s; cout << CodeGet(s) << endl; }
16 、 HJ22 汽水瓶
C++ #include <iostream> using namespace std; int TotalBottle(int n) { return n/2; } int main() { int n; while (cin >> n) { if (n > 0) { cout << TotalBottle(n) << endl; } } return 0; }
17 、输出单向链表中倒数第 k 个结点
C++ #include <iostream> using namespace std; #include<vector> class Node { public: int val; Node* next; Node(int x) { val = x; next = nullptr; } }; int main() { int num; int number; while (cin >> num) { vector<int> vec; while (num > 0) { cin >> number; vec.push_back(number); num--; } int n = vec.size(); int k; cin >> k; cout << vec[n - k] << endl; } return 0; } // 64 位输出请用 printf("%lld")