这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用int型存,后来觉着不行,改用long,结果还是WA,这是第一个程序。

第二个程序是改用string处理,确实比int方便很多,在运算符重载那里体现就非常明显。

这个题目用到了之前总结过的结构体加入优先级队列需要重载运算符,之所以写成结构体是因为我不知道直接将string加入优先级队列时怎么写比较函数。。。⊙﹏⊙b

通过这个题目充分说明你不知道测试数据到底有多么大,所以还是用string来处理大数据比较好。

转载请注明出处,谢谢!

原文地址:http://blog.csdn.net/monkeyduck

第一个程序

#include<iostream>
#include<cmath>
#include<queue> using namespace std; struct Node
{
int data,size;
bool operator < (const Node& a) const
{
if (size==a.size)
return data<a.data;
long long t1=(data*pow(10,double(a.size))+a.data);
long long t2=(a.data*pow(10,double(size))+data);
return t1<t2;
}
}; int n;
int main ()
{
while (cin>>n&&n)
{
priority_queue<Node> que;
for (int i=0;i<n;i++)
{
int num,flag=0;
cin>>num;
Node node;
node.data=num;
while (num)
{
num=num/10;
flag++;
}
node.size=flag;
que.push(node); }
while(!que.empty())
{
cout<<que.top().data;
que.pop();
}
cout<<endl; }
return 0;
}

第二个程序,AC代码

#include<iostream>
#include<queue>
#include<string> using namespace std;
struct Node
{
string str;
bool operator < (const Node& a) const
{
return str+a.str<a.str+str;
}
};
priority_queue<Node> que;
int n;
int main()
{
while (cin>>n&&n)
{
for (int i=0;i<n;i++)
{
Node node;
cin>>node.str;
que.push(node);
}
while (!que.empty())
{
cout<<que.top().str;
que.pop();
}
cout<<endl;
}
return 0;
}

最新文章

  1. 【CentOS】学习Bash
  2. android sdk下载
  3. Nginx简介及配置实用
  4. MYSQL 一些用法
  5. Git PHP提交
  6. [ES6] WeakMap vs Map
  7. 如何在SSIS的脚本组件中访问变量
  8. 求字符串长度 strlen(数组指针两种方式)
  9. 【Scala】Scala之String
  10. 【NOIP2011提高组】选择客栈
  11. Google Bigtable (中文版)
  12. Lua中的函数
  13. PHP的爬虫框架
  14. makefile中.PHNOY的用法
  15. 关于界面绘制过程多次回调ondraw()方法产生的问题
  16. Hyperledger Fabric v1.1.0安装记录(国内源版)
  17. Delphi 操作键盘按下和释放操作
  18. python log封装
  19. 白帽子讲web安全——一个安全解决方案的诞生细节
  20. CodeForces 327E Axis Walking(状压DP+卡常技巧)

热门文章

  1. poj 2886 (线段树+反素数打表) Who Gets the Most Candies?
  2. SVN查看最新几次提交日志的命令
  3. java读取properties文件时候要注意的地方
  4. HTML的报告
  5. UI设计工资有多高?怎么快速拿高薪?
  6. 不解压查看tar.gz包内文件
  7. match
  8. left join用法
  9. 【转载】为什么任何随便输入的账号使用SYSDBA权限都能登陆oracle
  10. day10作业—(闭包迭代器递归)