用c或者c++实现这个问题的解决方案,谢谢各位大虾

bingogo19 2009-11-03 04:43:41
有一个文本文件,记录了某个学校所有人的姓名、出生日期(假设没有人重名,该校大约有2万人)。记录格式如下:
。。。。。。
张三 19800120
李四 19810321
王五 19800122
赵六 19830321
。。。。。。
现在需要在某天举办一场生日晚会,邀请生日在当天的人员参加。如果期望这场生日晚会参加的人员尽可能多,那么应该选择在哪一天?用C/C++语言编写函数bestDate实现以上算法,该函数原型:char* bestDate (const FILE *recordFile)。在解答时,需要注意代码的效率、质量。
...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
youhun_1 2009-11-04
  • 打赏
  • 举报
回复
伪代码,提供大概思路
map<string.int> aMap;//记录日期和出现的次数
char* aDate;//当前文件行的日期
char* aResult;//存储返回结果
int nBestCount=0;//最大次数
int nCount=0;//已经出现的次数
if(aMap.find(aDate,nCount))
{
nCount++;
aMap.set(aDate,nCount);
}
else
{
nCount++;
aMap.insert(aDate,nCount);
}
if(nCount >nBestCount)
{
nBestCount = nCount;
aResult = aDate;
}
大体获取最多日期出现的思路如此,但是楼主此问题是不是还要考虑是否出现某些日期过生日的人数一样多的情况。
lylm 2009-11-03
  • 打赏
  • 举报
回复
1.最好的办法,文件入数据库表,然后按出生日期后4位分组,求count(*)最大的对应的日子
2.遍历一遍文件,用map<string,int>记录每个日子对应的人数,遍历完后求map对应人数最多的日子
mengde007 2009-11-03
  • 打赏
  • 举报
回复
;一次遍历;
whg01 2009-11-03
  • 打赏
  • 举报
回复
建立数组:
int days[12][31] = {0}; //记录相应天有多少个人过生日
读入每个学生的数据,并令相应的days[i][j]++;
比如:张三 19800120 则days[01-1][20-1]++;
然后找到days[][]中的最大值,即可。
victory1024 2009-11-03
  • 打赏
  • 举报
回复
统计每一个日期出现的次数,选出最多的咯。

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧