作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何对非常大的数字进行排序
03 10103538 2222 1233 6160 0142
03 10103538 2222 1233 6160 0141
30 10103538 2222 1233 6160 0141
30 10103538 2222 1233 6160 0142
30 10103538 2222 1233 6160 0141
30 10103538 2222 1233 6160 0142
用 C 语言
最佳答案
这是一个类似的 SPOJ 问题 http://www.spoj.pl/problems/SBANK/
您可以使用基数排序
或简单地通过二叉搜索树
来解决它(我就是这样做的)。
这是您在 C++ 中的操作方式(在以下位置实现您自己的 std::map
/std::set
/二叉搜索树
三)
map<string,int> tab;
map<string,int>::iterator it;
char acc[40];
int n;
scanf("%d\n",&n);
for(int i=0;i<n;i++)
{
gets(acc);
tab[acc]++;
}
for(it=tab.begin();it!=tab.end();it++)
{
printf("%s %d\n",it->first.c_str(),it->second);
}
printf("\n");
我的上述程序还打印相等数字的计数,我认为您的问题中没有指定这一点。因此,在这种情况下,简单的 std::set 或简单的二叉搜索树也可以工作。尽管在上面的问题中,我可以很容易地使用 std::set 而不是 std::map 来解决。
关于c - 如何对非常大的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11272186/
我是一名优秀的程序员,十分优秀!