这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用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;
}

uva10905同一思路的两种做法,前一种WA,后一种AC的更多相关文章

  1. jqGrid中实现radiobutton的两种做法

    http://blog.sina.com.cn/s/blog_4f925fc30102e27j.html   jqGrid中实现radiobutton的两种做法 ------------------- ...

  2. SqlServer保留几位小数的两种做法

    SqlServer保留几位小数的两种做法   数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round( ...

  3. LVS+keepalived 的DR模式的两种做法

    LVS DR模式搭建 准备工作 三台机器: dr:192.168.13.15 rs1:192.168.13.16 rs2: 192.168.13.17 vip:192.168.13.100 修改DR上 ...

  4. leetcode234 回文链表 两种做法(stack(空间非O(1)),空间O(1))

    link: leetcode234 回文链表 方法1, 快慢指针,把前半部分存入栈中和后半部分比较 public boolean isPalindrome(ListNode head) { if(he ...

  5. Mediocre String Problem (2018南京M,回文+LCP 3×3=9种做法 %%%千年好题 感谢"Grunt"大佬的细心讲解)

    layout: post title: Mediocre String Problem (2018南京M,回文+LCP 3×3=9种做法 %%%千年好题 感谢"Grunt"大佬的细 ...

  6. [置顶] echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)

    echarts x轴标签文字过多导致显示不全 如图: 解决办法1:xAxis.axisLabel 属性 axisLabel的类型是object ,主要作用是:坐标轴刻度标签的相关设置.(当然yAxis ...

  7. 代码:PC 链接列表面板border的一种做法(每行之间有分割线)

    PC 链接列表面板,border的一种做法 做页面经常遇到一种问题,上面是标题,下面是单行链接列表.为了保证后台套页面方便,所有列表项必须完全一样.但我们无法解决第一行或最后一行多出来的分割线. 使用 ...

  8. .NET类型转型的四种做法(转)

    .NET类型转型的四种做法: ◆ 强制转型:(int)变量名称 ◆ int.Parse(字符串变量名称) ◆ Convert.To类型(变量名称) ◆ TryParse 强制转型 (casting) ...

  9. Android布局居中的几种做法

    Android的布局文件中,如果想让一个组件(布局或View)居中显示在另一个布局(组件)中,可以由这么几种做法: android:layout_gravity android:gravity and ...

随机推荐

  1. Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)

    参考文档: 1.https://blog.csdn.net/fishernemo/article/details/27649233 2.http://helgaxu.iteye.com/blog/21 ...

  2. nodejs 数字字节转换操作

    function number2Bytes(i) { var arr = new Int32Array(1); arr[0] = 0; var buf = Buffer.from(arr.buffer ...

  3. eclipse中tomcat调试正确关联源码

    1.build path中jar包关联本地源码 2.tomcat中添加source关联工程lib下的jar包 以上两步即可. 可解决tomcat直接关联本地源码debug时无法计算表达式的情况. 错误 ...

  4. Struts问题

    1.struts框架的5大组件:mvc,标签库,校验框架,国际化,tiles; 2.struts的9大核心类以及与mvc对应的关系: C ActionServlet RequestProcessor ...

  5. MD5加密及Hash长度拓展攻击【通俗易懂】

    先放一个简单点的利用了Hash长度拓展攻击的题目 if($COOKIE["getmein"] === md5($secret . urldecode($username . $pa ...

  6. Two Sum LT1

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  7. GRADLE下运行main函数/执行测试用例

    group 'gongsibao.ged' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'idea' sourceCompati ...

  8. 搭建java环境和java学习

    https://blog.csdn.net/fishe_r/article/details/18863447 其中的 java配置文件用: { "shell_cmd": " ...

  9. JS closure

    闭包的概念 闭包,不同于一般的函数,它允许一个函数在立即词法作用域外调用时,仍可访问非本地变量. --维基百科 闭包就是能够读取其他函数内部变量的函数. --阮一峰 由于在Javascript语言中, ...

  10. 企业IT资产管理功能大全