这段时间又打算重新熟悉一遍第一个学期学的内容,加深一下本小白的理解
我盯上的是洛谷的训练题单
然后也是打了两个题单
其中的排序题有一道比较超大数字的题我印象很深刻
也就是这题,需要注意的是数字可以达到一百位,所以不管是long long还是double都是远远不够的,这时候突然想起来字符串本身就是可以通过字典序进行排列的,于是代码如下:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main() {
int n;
string s, t;
int id;
cin>>n;
for (int i = 1; i <= n; i++) {
cin >> t;
if (s.size() < t.size() || s.size() == t.size() && s < t) {
s = t;
id = i;
}
}
cout << id << endl << s << endl;
return 0;
}
然后就是拼数这一题,要拼出最大数字
最开始想得很复杂,想的是怎么排出最合适的数字,后来发现这个问题,它并不是问你这个数字如何由多个数字组合而成的,而是看如何选出适当的两个数,使得它们的组合最大,这样以此类推下来组成的数,就是最大的数。
bool cmp(string a,string b) {
return a + b > b + a;
}
也就是这个代码,至于为什么用string。哼哼,这充分说明之前的那道题你还没有理解透彻。
然后数据结构那边没什么好说的,就是理解一下线性表的一些知识(我太菜了。。。)
然后有一题感觉是对线性表知识很好的一个运用
这题用来回忆一些相关知识还是很好的,开始我没用线性表的这种思维去做结果还是TL了,呜呜呜,这题运用线性表的思维方法很快就能够做出来!大家不妨试一试,嘿嘿~
就这样,下次见咯~