题记:若立志投身算法研究,可精研理论算法:动态规划、递归、深度搜索等;若以解决问题为目的,主要为了工作内容,当尝试快而简单的方法,这该是学习的本意。
1.取近似值,四舍五入:
#include<iostream>
using namespace std;
int main()
{
float a;
cin>>a;
int b=a;
float c=a-b;
if(c>=0.5){
b+=1;
}
cout<<b;
return 0;
}
2.提取不重复整数
#include<bits/stdc++.h>
using namespace std;
int main() {
int nums;
cin >> nums;
string str = to_string(nums);
unordered_set<char> set;//定义容器很重要!unordered_set<char>set
reverse(str.begin(), str.end());
string res;
for(char c : str)
if(set.count(c) != 1) {
res += c;
set.insert(c);
}
cout << stoi(res) << endl;
return 0;
}
3.截取字符串
#include <iostream>
using namespace std;
//按按字符截取字符串的函数接口
int Intercept_String_by_Character(string str, int length)
{
//截取子字符串
string substr = str.substr(0, length);
cout << substr << endl;
return 0;
}
//主函数
int main()
{
string str;
int length;
while (cin >> str >> length)
{
Intercept_String_by_Character(str, length);
}
return 0;
}
//简洁实现:
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
int k;
cin >> s >> k;
cout << s.substr(0, k);
return 0;
}
4.输入n个整数,输出最小的k个
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,k; //n代表输入的整数个数,k代表最小的数字个数
while(cin>>n>>k) { //输入整数n和k
int num;
vector<int> vec; //容器vec存放输入的整数数组
for(int i=0;i<n;i++) {
cin>>num;
vec.push_back(num);
}
sort(vec.begin(),vec.end()); //利用STL自带排序函数sort对vec容器进行排序
for(int i=0;i<k;i++) {
cout<<vec[i]<<" "; //按从小到大的顺序输出最小的n个数
}
cout<<endl;
}
return 0;
}
5.输入整型数组和排序标识,对其元素按照升序或降序进行排序
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
int main()
{
int n;
cin >> n;
vector<int> arr;
int num;
for (int i = 0; i < n; i++) {
cin >> num;
arr.push_back(num);
}
int order;
cin >> order;
if (order == 0) {
sort(arr.begin(), arr.end());
} else {
sort(arr.begin(), arr.end(), compare);
}
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}