6 条题解
-
4
这道题其实很简单,榜一其实有点麻烦了,字典其实可以用QWQ[0]来比较,因为题目里只有小写,所以ASCII码靠后的一定靠后,上代码,AC过!!!
#include<bits/stdc++.h> using namespace std; struct Student { int num; string name; }a[105];//定义结构体 bool cmp(Student x,Student y)//排序函数 { if(x.name.length() != y.name.length()) { return x.name.length() > y.name.length(); } else if(x.name[0] != y.name[0]) { return x.name[0] > y.name[0]; } else { return x.num > y.num; } } int main()//简单调用一下就可以了 { int n; cin>>n; for(int i = 1;i<=n;i++) { cin>>a[i].num>>a[i].name; } sort(a+1,a+n+1,cmp); for(int i = 1;i<=n;i++) { cout<<a[i].num<<" "<<a[i].name<<endl; } return 0; }//AC过,放心食用!!!
-
3
这题居然只有一个测试点。
看完题目,你可能想问,字符串要怎么比较呢?
下面我先来讲讲字符串(string)的比较。
1.compare()
int qwq = s1.compare(s2)
这是常用的 compare() 的字符串比较方式,其中 s1 与 s2 为 string 类型。
compare() 会返回一个数,若参与比较的两个字符串相同,则函数返回 0;若 s1 按字典码要先于 s2,则返回负值;反之,则返回正值。下面举例说明下 compare() 的使用。
例:
#include <iostream> using namespace std; int main (void){ string A = "aBcdef"; string B("AbcdEf"); string C; C = "AbcdEf"; //下面是各种比较方法 int a = A.compare (B); //完整的A和B的比较 int b = B.compare(C); int c = B.compare(A); cout << a << "\n" << b << "\n" << c << "\n"; }
输出为:
1 0 -1
2.比较运算符
String 非常好用,它甚至可以直接运用
> < == >= <= !=
来进行比较。相对于字符数组(char[]),string 不用定长度,还内置了许多函数。
由于
> < == >= <= !=
的用途与正常用途相似,因此这里不给出详细解释,直接看例子吧。#include <iostream> using namespace std; int main (void){ string A = "aBcdef"; string B("AbcdEf"); string C; C = "AbcdEf"; bool a = A > B; bool b = B == C; bool c = B > A; cout << a << "\n" << b << "\n" << c << "\n"; }
输出为:
1 1 0
最后我们就可以轻松愉快地写出 AC 代码。
AC代码:
#include <iostream> //cin cout #include <algorithm> //sort #define maxn 105 using namespace std; int n; struct QWQ{ //每位学生 int id; string name; //编号,名字 }qwq[maxn]; bool cmp(QWQ a , QWQ b){ //比较 if(a.name == b.name) return a.id > b.id; if(a.name.size() == b.name.size()) return a.name > b.name; return a.name.size() > b.name.size(); } int main(void){ cin.tie(0); //优化 cout.tie(0); cin >> n; for(int i = 1;i <= n;i++) cin >> qwq[i].id >> qwq[i].name; sort(qwq + 1 , qwq + n + 1 , cmp); //结构体(字符串)排序 for(int i = 1;i <= n;i++) cout << qwq[i].id << " " << qwq[i].name << "\n"; }
-
0
</span>#include <bits/stdc++.h>//万能头(1/1) using namespace std; struct tx{//学号,姓名 int xh; string xm; }; tx a[105]; bool cmp(tx a,tx b){//感谢森林? 的提示! if(a.xm == b.xm) return a.xh > b.xh; if(a.xm.size() == b.xm.size()) return a.xm > b.xm; return a.xm.size() > b.xm.size(); } int main(){ int n;//不用说 cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].xh>>a[i].xm; }sort(a+1,a+n+1,cmp);//注:如果一直不对,加上cmp即可~ for(int i=1;i<=n;i++){ cout<<a[i].xh<<' '<<a[i].xm<<endl; } return 0; }//最后你可以愉快的AC啦~
- 1
信息
- ID
- 1139
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 415
- 已通过
- 202
- 上传者