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 ...
随机推荐
- js中this的使用
this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ this.x = 1; } 随着函数使用场合的 ...
- 自己写的一个SqlHelper,感觉使用起来挺方便的
自己写的一个SqlHelper,感觉使用起来挺方便的 using System; using System.Data; using System.Collections.Generic; using ...
- linux环境下android-ndk下的ffmpeg编译
目前正在做手机底层播放器对的开发,需要用的ffmpeg,因为是新手,所以先从ffmpeg的编译开始做起.虽然是在前人的基础上,但是在linux上编译确实头一遭,因此在编译中,总有些坑是必须要填的,下面 ...
- js 判断是什么类型浏览器
// firefoxif ( window.sidebar && "object" == typeof( window.sidebar ) && ...
- 告别IT,出售多年自己研发的股票分析系统源码
不知已过而立,发狠告别IT,回头看看以前自己的多个作品,耗时最多的就是这个股票分析系统了,留在自己的电脑里也体现不出多大价值了,故打算出售源码给需要的人,联系方式QQ:874724605 注明:股票源 ...
- Python从零开始(1)新手常问
如何清除屏幕 如果是在Windows命令行中,输入 import os os.system('cls') 在IDEL中没有找到完美的清除屏幕的方法 网上提到用新建窗口的方法 如何退出Python提示符 ...
- CALayer 4 详解 -----转自李明杰
CALayer4-自定义层 本文目录 一.自定义层的方法1 二.自定义层的方法2 三.其他 自定义层,其实就是在层上绘图,一共有2种方法,下面详细介绍一下. 回到顶部 一.自定义层的方法1 方法描 ...
- android两种基本联网方式与一种第三方开源项目的使用
安卓请求网络的三种方式 在请求网络的时候一般常用的提交方式是post或者get请求,post请求安全,传输大小无限制,但是代码量多些,get请求是浏览器有大小限制,用户提交的信息在浏览器的地址栏显示出 ...
- liunx下,只获取主机的IP?
命令: ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}'
- 【转】responseText,responseBody,responseXML差别
为了做ajax的代理,研究了下服务器端的xmlhttp和客户端ajax中的xmlhttp,做了个比较 由于我一直使用JavaScript作为Asp的教本语言,所以比较起来更清楚.服务器端的xmlhtt ...