标签:
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。
6
Avril 3 2
Candy 4 5
Tim 3 2
Sufia 4 5
Lagrange 4 5
Bill 3 2
3 2 Tim Bill Avril
4 5 Candy Sufia Lagrange
string 的STL大法+模拟
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 string s; 5 int yue,ri; 6 }a[200]; 7 int N; 8 int cmp(const node&w,const node&e){ 9 if(w.yue<e.yue) return 1; 10 else if(w.yue==e.yue){ 11 if(w.ri<e.ri) return 1; 12 else if(w.ri==e.ri){ 13 if(w.s.length()<e.s.length()) return 1; 14 else if(w.s.length()==e.s.length()){ 15 if(w.s<e.s) return 1; 16 } 17 } 18 } 19 return 0; 20 } 21 int tot; 22 string ans[200]; 23 bool jud=false; 24 int main(){ 25 scanf("%d",&N); 26 for(int i=1;i<=N;i++){ 27 cin>>a[i].s; 28 cin>>a[i].yue>>a[i].ri; 29 } 30 sort(a+1,a+N+1,cmp); 31 a[N+1].yue=100; a[N+1].ri=100; 32 for(int i=2;i<=N+1;i++){ 33 if(a[i].yue==a[i-1].yue&&a[i].ri==a[i-1].ri){ 34 tot++; 35 if(tot==1){ 36 ans[tot]=a[i-1].s; 37 ans[++tot]=a[i].s; 38 } 39 else{ 40 ans[tot]=a[i].s; 41 } 42 } 43 else{ 44 if(tot>=2){ 45 jud=true; 46 cout<<a[i-1].yue<<" "<<a[i-1].ri<<" "; 47 for(int i=1;i<=tot;i++){ 48 cout<<ans[i]<<" "; 49 } 50 cout<<endl; 51 tot=0; 52 } 53 } 54 } 55 if(jud==false){ 56 cout<<"None"; 57 } 58 return 0; 59 }
标签:
原文地址:http://www.cnblogs.com/CXCXCXC/p/4903227.html