被HDU的汉诺塔虐个半死 T T
故来虐虐水题。
唯一要注意的就是内存限制。
Input Data is pretty big (~ 25 MB) so use faster IO.
Note: The memory limit of this problem is 2 Megabyte Only.
当输入数据较大应尽量使用scanf/printf而不是cin/cout
因为有内存限制,而n<=2 000 000所以不能全部存入数组在调用sort进行排序。
注意到年龄为1~100一个简单的解决办法是弄个数组 ,统计各个年龄的个数,等下按顺序输出即可。
#include <cstdio>
#include <cstring>
int main()
{
int n,temp,age[101];
while(scanf("%d",&n)!=EOF,n)
{
memset(age,0,sizeof(age));
while(n--)
{
scanf("%d",&temp);
age[temp]++;
}
bool first=true;
for(int i=1;i<101;i++)
{
if(age[i])
for(int j=0;j<age[i];j++)
{
if(!first)
printf(" ");
printf("%d",i);
first=false;
}
}
printf("\n");
}
return 0;
}
本文详细介绍了如何解决HDU汉诺塔问题时遇到的内存限制问题,通过使用快速I/O方法和数组计数技巧优化内存使用,确保程序在处理大量输入数据时仍能高效运行。
284

被折叠的 条评论
为什么被折叠?



