题意:输入进去的最后一组数。
思路:水。
#include<bits/stdc++.h> using namespace std; int main() { int i,f1,f2; string a; cin>>a; f1=0;f2=0; for(i=0;i<a.length();i++) { if(a[i]==',') f1=i; if(a[i]=='(') f2=i; } i=max(f1,f2); for(;i<a.length();i++) { if(a[i]==','||a[i]=='(') continue; if(a[i]==')') break; else cout<<a[i]; } cout<<endl; return 0; }
B-沃老师学生的成绩
https://www.nowcoder.com/acm/contest/83/B
题意:比较字符串大小,相同的话按名字字典序输出
思路:用erase删除数组元素。
临时变量作为引用参数传递时,必须是常量引用。所以在cmp函数里加入const 再加参数。
临时变量不能作为非const引用参数,不是因为他是常量,而是因为c++编译器的一个关于语义的限制。如果一个参数是以非const引用传入,c++编译器就有理由认为程序员会在函数中修改这个值,并且这个被修改的引用在函数返回后要发挥作用。但如果你把一个临时变量当作非const引用参数传进来,由于临时变量的特殊性,程序员并不能操作临时变量,而且临时变量随时可能被释放掉,所以,一般说来,修改一个临时变量是毫无意义的,据此,c++编译器加入了临时变量不能作为非const引用的这个语义限制,意在限制这个非常规用法的潜在错误。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; const int SIZE = 1e6 + 10; struct grade { string name; string score, sscore; } a[SIZE]; bool cmp(const grade &x,const grade &y) { if(x.sscore != y.sscore) return x.sscore > y.sscore; return x.name < y.name; } int main() { int n; while(cin >> n) { for(int i = 0; i < n; i++) { cin >> a[i].name >> a[i].score; a[i].sscore = a[i].score; int j = a[i].sscore.length() - 1; while(a[i].sscore[j] == '0') { a[i].sscore.erase(j); j--; } } sort(a, a + n, cmp); for(int i = 0; i < n; i++) { cout << a[i].name << " " << a[i].score << endl; } } return 0; }