PKU 1007
题名:DNA排序
题意:给定字符串长度、个数,计算每个字符串的逆序数,然后从大到小排列,有兴趣的可以去看下原题。
计算字符串逆序数,然后排序,这里使用了快速排序算法,string释放的时候竟然有问题,直接字符数组吧。
// 1007.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <algorithm>
using namespace std;
class data
{
public:
char s[];
int c;
};
int partion(data a[],int p,int r){
int x = a[r].c; //通常,拿最后一个值,作为预期的中间值
int middle = p; //记录“较小的一段数据”的最大下标。通常这个值在p和r的中间,故起名middle
data *temp=new data;
for (int j = p ; j < r ; j++){
if (a[j].c < x){ memcpy(temp,&a[middle],sizeof(data));
//int temp = a[middle].c;
memcpy(&a[middle],&a[j],sizeof(data));
//a[middle] = a[j];
memcpy(&a[j],temp,sizeof(data));
//a[j] = temp;
middle++;
}
}
//int temp = a[r];
memcpy(temp,&a[r],sizeof(data));
//a[r] = a[middle];
memcpy(&a[r],&a[middle],sizeof(data));
//a[middle] = temp;
memcpy(&a[middle],temp,sizeof(data));
delete temp;
return middle;
} void QuickSort(data a[],int p,int r){
if (p<r){
int q=partion(a,p,r);
QuickSort(a,p,q-);
QuickSort(a,q+,r);
}
} int main(int argc, char* argv[])
{
int slen=,snum=;
cin>>slen>>snum;
int count=;
char temp[]={}; data *d1=new data[snum];
while (count<snum)
{
cin>>temp;
strcpy(d1[count].s,temp);
int bigTimes=;
for (int i=;i<strlen(temp)-;i++)//计算大的次数
{
for (int j=i+;j<strlen(temp);j++)
{
if(temp[i]>temp[j])
bigTimes++; }
}
d1[count].c=bigTimes;
count++;
}
QuickSort(d1,,count-);
for (int i=;i<count;i++)
{
//strcpy(temp,d1[i].s.c_str());
cout<<d1[i].s<<endl;
}
delete []d1;
return ;
}
PKU 1007的更多相关文章
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告
题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 . 其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...
- PKu 2195
//PKu 2195 回家 By Loli_con Enail : Loli_con@outlook.com /* 题目叙述 ========= 在一个网格图中,有n个人和n个房子.每一个单位时间,每 ...
- sicily 1007. To and Fro 2016 11 02
// Problem#: 1007// Submission#: 4893204// The source code is licensed under Creative Commons Attrib ...
- 【HDU 1007】Quoit Design
http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近欧式距离模板题. 用分治大法(分治的函数名用cdq纯属个人习惯_(:з」∠)_) 一开始狂M. 后来判 ...
- 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design
题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...
- poj 1007 DNA Sorting 解题报告
题目链接:http://poj.org/problem?id=1007 本题属于字符串排序问题.思路很简单,把每行的字符串和该行字符串统计出的字母逆序的总和看成一个结构体.最后把全部行按照这个总和从小 ...
- 【BZOJ】 1007: [HNOI2008]水平可见直线(凸壳)
http://www.lydsy.com/JudgeOnline/problem.php?id=1007 一开始我贪心的写了下,当然全wa了.. 这题看了题解感觉很简单. 首先什么情况才能看到呢? w ...
- HDU 1007 Quoit Design(二分+浮点数精度控制)
Quoit Design Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
随机推荐
- HTML页面优化
第一步:加载优化 减少HTTP请求. 因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个.a) 合并CS ...
- 关于firstChild,firstElementChild和children
<div> <p>123</p> </div> 在上面这段代码中,如果使用以下js代码 var oDiv=document.getElementByTa ...
- Phalapi 中Union和Union All的用法
有时候在进行数据库查询的时候会用到union查询,但是查询的时候会发现两个limit只有一个是有效的,如下查询 select * from table where status = 0 limit 1 ...
- for循环每次展示固定条数的数据的写法。
第一种是一组json数据实现分页的效果,也就是每一次展示5条数据.第二种场景是每一秒展示4条数据,直到全部显示完.两种思路都做个笔记记录下. var nums = 5; //每页出现的数量 var p ...
- mybatis高级(2)_数据库中的列和实体类不匹配时的两种解决方法_模糊查询_智能标签
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- css中的一些概念
1.伪类与伪元素 1.单冒号(:)用于 CSS3 伪类,双冒号(::)用于 CSS3 伪元素. 2.对于 CSS2 中已经有的伪元素,例如 :before,单冒号和双冒号的写法 ::before 作用 ...
- guava学习--AsyncFunction
AsyncFuntion接口与之前学习吃的使用Function和Functions进行对象转换有很密切的联系,AsyncFuction接口是Function接口的异步表现,AsyncFuction和F ...
- 关于js异步上传文件
好久没登录博客园了,今天来一发分享. 最近项目里有个需求,上传文件(好吧,这种需求很常见,这也不是第一次遇到了).当时第一想法就是直接用form表单提交(原谅我以前就是这么干的),不过表单里不仅有文件 ...
- monads-are-elephants(转)
介绍monads有点像互联网时代的家庭手工业.我想 “为什么要反对传统?”,但这篇文章将以Scala对待monads的方式来描述. 有个古老的寓言,讲述了几个瞎子第一次摸到大象.一个抱着大象的腿说:“ ...
- Amazon EC2免费VPS防止超额被扣钱三大方法:流量 硬盘读写 运行时长
Amazon EC2也就是亚马逊云服务免费VPS主机服务,内存是613MB,月流量是30GB,主机空间是30GB,可以免费使用一年,又加上Amazon服务器全球多个节点CDN和本身的名气,早在2010 ...