http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1024

01排序

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
总提交:708            测试通过:258

描述

将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。

输入

输入数据中含有一些01串,01串的长度不大于256个字符。

输出

重新排列01串的顺序。使得串按基本描述的方式排序。

样例输入

10011111
00001101
1010101
1
0
1100

样例输出

0
1
1100
1010101
00001101
10011111

题目来源

ZJUT

 #include<iostream>
#include<string>
//#include<fstream>
#include<vector>
using namespace std;
class Node
{
public:
string str;
int len;
int oneNum;
Node(string s)
{
str = s;
this->len = str.length();
int tmp = ;
for (size_t i = ; i<len; i++)
if (str[i] == '') tmp++;
oneNum = tmp;
}
}; int cmp(Node& node1, Node& node2)//-1表示node1排在前面0表示node1和node2相等1表示node1排在node2后面
{
if (node1.len<node2.len)
return -;
else if (node1.len>node2.len) return ;
else //长度相等
{
if (node1.oneNum == node2.oneNum)//一的数目相等
{
size_t i;
for (i = ; i<node1.len; i++){//比较ASCLL码值
if (node1.str[i]<node2.str[i]) return -;
else if (node1.str[i]>node2.str[i]) return ;
}
if (i == node1.oneNum) return ;//二者相等
}
else if (node1.oneNum<node2.oneNum) return -;
else //node1中1的数目比node2的多
return ;
}
return ;
}
int main()
{
//ifstream ifile("D:\\eee.txt");
string str;
vector<Node> nVec;
while (cin>>str)
{
Node node(str);
if (true == nVec.empty())
nVec.push_back(node);
else
{
vector<Node>::iterator iter = nVec.begin();
for (iter; iter != nVec.end(); iter++){
if (cmp(*iter, node) == ){
nVec.insert(iter, node);
break;
}
if (cmp(*iter, node) == ){
nVec.insert(iter, node);
break;
}
if (cmp(*iter, node) == -)
;
if (iter == nVec.end()-){
//nVec.insert(iter, node);
nVec.push_back(node);
break;
} } }
}
for (size_t i = ; i<nVec.size(); i++)
{
cout << nVec[i].str << endl;
}
return ;
}

ACM——01排序的更多相关文章

  1. 2546 ACM 01背包

    题目http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路:再01背包的问题上稍作修改 如何满足 :卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购 ...

  2. 九度OJ 1339:ACM (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:712 解决:379 题目描述: 今年的ACM世界总决赛快要开始了,需要有一个排名算法来对每支队伍进行现场排名.ACM组委会把这个任务交给了你 ...

  3. 01排序的Java实现

    比赛描写叙述: 的个数同样时再按ASCII码值排序. 输入: 个字符. 输出: 串的顺序.使得串按基本描写叙述的方式排序. 例子输入: 例子输出: 被AC的代码例如以下: import java.ut ...

  4. ACM——简单排序

    简单选择排序 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:836            测试通过:259 描述 给定输入排序元素 ...

  5. [笔记]ACM笔记 - 排序小技巧

    Description 一个数组,要求先对前n个数字排序(以方便后续操作):又要求对前n+i个数字排序:又要求对前n+j - 前n+k个数字排序(i.j.k的大小远小于n,且i.j.k间没有大小关系) ...

  6. acm.njupt 1001-1026 简单题

    点击可展开上面目录 Acm.njupt 1001-1026简单题 第一页许多是简单题,每题拿出来说说,没有必要,也说不了什么. 直接贴上AC的代码.初学者一题题做,看看别人的AC代码,寻找自己的问题. ...

  7. Super Object Toolkit (支持排序)

    (* * Super Object Toolkit * * Usage allowed under the restrictions of the Lesser GNU General Public ...

  8. superobject 设定排序方式

    (* * Super Object Toolkit * * Usage allowed under the restrictions of the Lesser GNU General Public ...

  9. JZOJ4605. 排序(线段树合并与分裂)

    题目大意: 每次把一个区间升序或降序排序,最后问一个点是什么. 题解: 如果只是问一个点,这确乎是个经典题,二分一下答案然后线段树维护01排序. 从pty那里get到了可以用线段树的合并与分裂实时地维 ...

随机推荐

  1. HDU 3436--Queue-jumpers (树状数组 or Splay Tree)

    树状数组这个真心想了好久,还是没想出来 %%% www.cppblog.com/Yuan/archive/2010/08/18/123871.html 树状数组求前缀和大于等于k的最大值,第一次看到这 ...

  2. 8000401a 错误及解决办法

    将web程序部署到服务器上时,偶尔会遇到下面的错误: System.Runtime.InteropServices.COMException (0x8000401A): 检索 COM 类工厂中 CLS ...

  3. Postfix配置Q&A

    原文地址:http://space.doit.com.cn/51460/viewspace-4943.html 在配置Postfix中遇到的一些问题及相关的解决方法,希望在遇到相同的问题时能起参考的作 ...

  4. 关于Log4j的初始化

     1Log4j是什么 Log4j是Apache比較优秀的开源项目.在各个平台和项目中有较为广泛的应用.是为JAVA平台开发的日志管理平台.同一时候,Log4j也是JAVA开发项目中使用比較普遍的日 ...

  5. SAP 库存查询算法

    SAP 的后台有关库存的表,是一种很有意思的表.库存表分两种,一种是当前库存表,另一种是历史库存表.例如有MARD\MCHB\MSPR\MKOL等表,对应的历史库存表就是MARDH\MCHBH\MSP ...

  6. android122 zhihuibeijing 新闻中心NewsCenterPager加载网络数据实现

    新闻中心NewsCenterPager.java package com.itheima.zhbj52.base.impl; import java.util.ArrayList; import an ...

  7. VC 部署

    部署是分发要安装到其他计算机上的已完成应用程序或组件的过程. 当使用 Visual C++ 库提供的功能生成 C/C++ 应用程序时,该应用程序在运行时将依赖于那些库的存在. 为了让应用程序运行,它必 ...

  8. [ZZ]良好的编码习惯

    1.以简洁明了的方式编写C程序.通常把这种程序编写方法称为KIS(“保持简洁”).不要用古怪的方式编写程序. 2.阅读所有的C版本手册.经常参考所用的C版本的手册能了解该版本的丰富的特点,并正确地使用 ...

  9. Vmware中为Mac Os安装vmtools

    成功方法: 1. 在VMWare中点击edit this virtual machine 2. 添加CD/DVD,使用iso,找到那个darwin.iso 3. 在setting里面,点击CD/DVD ...

  10. iOS利用代理实现界面跳转

    引入代理类头文件和要跳转到的界面头文件 -(void)aaa { //可以插入动画 LYXViewControllor * view = [LYXViewControllor new]; LYXDel ...