百炼Oj 生日相同
2018-04-05 11:18
239 查看
将生日序号作为索引的关键字,开一个二维的字符串数组。#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool cmp(const string &s1,const string &s2)
{
if(s1.length()!=s2.length())
return s1.length()<s2.length();
else
return s1<s2;
}
string v[600][185];
int vcnt[600]={0};
int main(int argc, char *argv[])
{
int n;
cin >> n;
while(n--)
{
string str;int m,d;
cin >> str >> m >> d;
v[40*m+d][vcnt[40*m+d]++]=str;
}
bool flag=false;
for(int i=0;i<600;i++)
{
if(vcnt[i]>1)
{
flag=true;
printf("%d %d ",i/40,i%40);
sort(v[i],v[i]+vcnt[i],cmp);
for(int j=0;j<vcnt[i]-1;j++)
cout << v[i][j]<<" ";
cout<<v[i][vcnt[i]-1]<<endl;
}
}
if(!flag)
printf("None\n");
return 0;
}
#include <string>
#include <algorithm>
using namespace std;
bool cmp(const string &s1,const string &s2)
{
if(s1.length()!=s2.length())
return s1.length()<s2.length();
else
return s1<s2;
}
string v[600][185];
int vcnt[600]={0};
int main(int argc, char *argv[])
{
int n;
cin >> n;
while(n--)
{
string str;int m,d;
cin >> str >> m >> d;
v[40*m+d][vcnt[40*m+d]++]=str;
}
bool flag=false;
for(int i=0;i<600;i++)
{
if(vcnt[i]>1)
{
flag=true;
printf("%d %d ",i/40,i%40);
sort(v[i],v[i]+vcnt[i],cmp);
for(int j=0;j<vcnt[i]-1;j++)
cout << v[i][j]<<" ";
cout<<v[i][vcnt[i]-1]<<endl;
}
}
if(!flag)
printf("None\n");
return 0;
}
相关文章推荐
- 问题 : 相同生日
- ACM之生日相同
- 50个人中有相同生日的概率(考虑闰年)
- 算生日相同的概率
- 生日相同(结构体排序)
- 求n个人中,生日相同的概率(Java集合框架之HashSet的用法)
- n个人中至少有两个人生日相同的概率
- java算法:生日相同
- 两人生日相同的概率
- n个人中至少有两个人生日相同的概率
- 求一百个人中有人生日相同的概率
- 相同生日概率(经典问题)
- OpenJudge 6377:生日相同 2.0——题解
- 6377:生日相同 2.0 题解
- 生日相同
- OpenJudge-计算机概论(A)-1-生日相同 2.0
- 相同生日
- 3.1数据结构之结构 6377 生日相同 2.0
- 百炼OJ 2744找相同子串
- 蓝桥杯-生日相同的概率