ACM——01排序
http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1024
01排序
总提交: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排序的更多相关文章
- 2546 ACM 01背包
题目http://acm.hdu.edu.cn/showproblem.php?pid=2546 思路:再01背包的问题上稍作修改 如何满足 :卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购 ...
- 九度OJ 1339:ACM (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:712 解决:379 题目描述: 今年的ACM世界总决赛快要开始了,需要有一个排名算法来对每支队伍进行现场排名.ACM组委会把这个任务交给了你 ...
- 01排序的Java实现
比赛描写叙述: 的个数同样时再按ASCII码值排序. 输入: 个字符. 输出: 串的顺序.使得串按基本描写叙述的方式排序. 例子输入: 例子输出: 被AC的代码例如以下: import java.ut ...
- ACM——简单排序
简单选择排序 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:836 测试通过:259 描述 给定输入排序元素 ...
- [笔记]ACM笔记 - 排序小技巧
Description 一个数组,要求先对前n个数字排序(以方便后续操作):又要求对前n+i个数字排序:又要求对前n+j - 前n+k个数字排序(i.j.k的大小远小于n,且i.j.k间没有大小关系) ...
- acm.njupt 1001-1026 简单题
点击可展开上面目录 Acm.njupt 1001-1026简单题 第一页许多是简单题,每题拿出来说说,没有必要,也说不了什么. 直接贴上AC的代码.初学者一题题做,看看别人的AC代码,寻找自己的问题. ...
- Super Object Toolkit (支持排序)
(* * Super Object Toolkit * * Usage allowed under the restrictions of the Lesser GNU General Public ...
- superobject 设定排序方式
(* * Super Object Toolkit * * Usage allowed under the restrictions of the Lesser GNU General Public ...
- JZOJ4605. 排序(线段树合并与分裂)
题目大意: 每次把一个区间升序或降序排序,最后问一个点是什么. 题解: 如果只是问一个点,这确乎是个经典题,二分一下答案然后线段树维护01排序. 从pty那里get到了可以用线段树的合并与分裂实时地维 ...
随机推荐
- Send email alert from Performance Monitor using PowerShell script (检测windows服务器的cpu 硬盘 服务等性能,发email的方法) -摘自网络
I have created an alert in Performance Monitor (Windows Server 2008 R2) that should be triggered whe ...
- 各种排序算法代码(C语言版)
选择排序 #include <stdio.h> /* * 选择排序 * 稳定性:不稳定 * 时间复杂度:O(N^2) **/ void select_sort(int a[], int l ...
- TCP/IP协议详解内容总结
TCP/IP协议 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议. TCP/IP分层: 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为 ...
- MSSQLSERVER数据库- 触发器
参考了别人写的文章,我删除掉一些废话,只看一些我想看的信息.整理了一下,记录在这里,方便以后查阅! 1.当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中. 2.当触发d ...
- ios之runtime学习
今天学习了一下ios的runtime,看了其他博主的博客写的很不错,自己就不班门弄斧了,仅在此转载: 1.关于oc中类和元类:http://husbandman.diandian.com/post/2 ...
- 用RelativeLayout布局可以在imageview中写上文字
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- Mysql 存储过程、函数、触发器和视图的权限检查
当存储过程.函数.触发器和视图创建后,不单单创建者要执行,其它用户也可能需要执行,换句话说,执行者有可能不是创建者本身,那么在执行存储过程时,MySQL是如何做权限检查的? 在默认情况下,MySQL将 ...
- cocos2d-x Animation
转自:http://codingnow.cn/cocos2d-x/810.html 这一篇来学习怎么使用cocos2d-x引擎播放帧动画,就是把一帧一帧的图片像电影那样显示出来.1. 首先来了解一下相 ...
- 【转】与BT下载相关的概念
1. DHT DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整 ...
- Java下拼接运行动态SQL语句
mod=viewthread&tid=3039" target="_blank">Java拼接动态SQL的一般做法有 1.使用动态语句 非常多数 ...