之前的答案错误问题已经解决了,现在还有运行超时的问题,先贴上之前的代码

 1 #include <iostream>
2 #include <string.h>
3 using namespace std;
4
5 int main()
6 {
7 int count, renum;
8 string add;
9 cin>>add>>count>>renum;
10 string add1[count],add2[count],madd1[count],madd2[count];
11 int mnum[count],num[count];
12 for(int i=0;i<count;i++)
13 {
14 cin>>add1[i]>>num[i]>>add2[i];
15 }
16 for(int i=0;i<count;i++)
17 {
18
19 for(int j=0;j<count;j++)
20 {
21 if(add1[j]==add)
22 {
23 madd1[i] = add1[j];
24 mnum[i]=num[j];
25 madd2[i] = add2[j];
26 add=madd2[i];
27 break;
28 }
29 }
30 }
31 int temp=0;
32 int fake = count;
33 while(count-renum>=0)
34 {
35 for(int i= temp,j=temp+renum-1;i<=temp+renum-1;i++,j--)
36 {
37 add1[i] = madd1[j];
38 num[i] = mnum[j];
39 }
40 count-=renum;
41 temp=temp+renum;
42 }
43 for(int i=temp;i<fake;i++)
44 {
45
46 add1[i] = madd1[i];
47 num[i] = mnum[i];
48 }
49 for(int i=0;i<fake-1;i++)
50 {
51 add2[i]=add1[i+1];
52 }
53 add2[fake-1] = "-1";
54 for(int i=0;i<fake;i++)
55 {
56 cout<<add1[i]<<" "<<num[i]<<" "<<add2[i]<<endl;
57 }
58 return 0;
59 }

  这个程序的复杂度为o(n*n),现在想办法降低复杂度,分析可以发现大部分时间是花在将输入数据按顺序排序上,然后我想到如果输入数据的每一行的第一个,和第三个数据真的表示为地址的话,就省去了排序的时间,所以,我们可以开一个10w数组,数组下标表示地址,以此来减少排序时间。具体实现代码如下

 #include <iostream>
#include <string.h>
#include <iomanip>
using namespace std; int main()
{
int count ,add,renum;
cin>>add>>count>>renum;
int add1[],num[],add2[];
for(int i=;i<=;i++)
{
add1[i]=;
add2[i]=;
num[i]=;
}
for(int i=;i<count;i++)
{
int a,b,c;
cin>>a>>b>>c;
add1[a]=a;
num[a]=b;
add2[a]=c; }
add2[]=add;
int before=;
int late=-;
int re[renum];
int total=;
int sha=;
while(add2[sha]!=-)
{
sha=add2[sha];
total++;
}
int xunh = total/renum;
for(int j=;j<xunh;j++)
{
int x = add2[before];
for(int i=;i<renum;i++)
{
re[renum--i] = x;
x=add2[x];
if(i==renum-)
{
late = x;
}
}
add2[before] = re[];
for(int i=;i<renum-;i++)
{
add2[re[i]] = re[i+];
}
add2[re[renum-]] = late;
before = re[renum-];
}
int m =;
while(m!=-)
{
m=add2[m];
if(m!=- &&add2[m]!=-)
cout<<setw()<<setfill('')<<add1[m]<<" "<<num[m]<<" "<<setw()<<setfill('')<<add2[m]<<endl;
else if(m!=-)
cout<<setw()<<setfill('')<<add1[m]<<" "<<num[m]<<" "<<add2[m]<<endl;
}
return ;
}

上传检验成功。

以上。

PAT 链表倒序的算法优化的更多相关文章

  1. LeetCode :2.两数相加 解题报告及算法优化思路

    题目连接:2.两数相加 题意 题目难度标为 中等, 因为题意上有一部分理解难度,以及需要数据结构的链表基础. 还不知道到链表的童鞋可以粗略的看下百度百科或者是翻出数据结构的书看一看,通俗一点的语言来解 ...

  2. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  3. Harris角点检测算法优化

    Harris角点检测算法优化 一.综述 用 Harris 算法进行检测,有三点不足:(1 )该算法不具有尺度不变性:(2 )该算法提取的角点是像素级的:(3 )该算法检测时间不是很令人满意. 基于以上 ...

  4. RSA算法优化

    RSA算法优化 大数乘法 模乗优化 剩余定理(孙子定理) RSA加解密 python的RSA计算优化 #-*- coding: utf-8 -*- ''' /********************* ...

  5. 内部元素一一相应的集合的算法优化,从list到hashmap

    说是算法优化,基本上是在吹牛,仅仅只是算是记录下,我写代码时候的思路.毕竟还是小菜鸟. 我要开一个party,与会者都是情侣,可是情侣并非一起过来的,而是有先有后,可是每位与会者来的时候都拿着一束鲜花 ...

  6. Spark Mllib里的协调过滤的概念和实现步骤、LS、ALS的原理、ALS算法优化过程的推导、隐式反馈和ALS-WR算法

    不多说,直接上干货! 常见的推荐算法 1.基于关系规则的推荐 2.基于内容的推荐 3.人口统计式的推荐 4.协调过滤式的推荐 (广泛采用) 协调过滤的概念 在现今的推荐技术和算法中,最被大家广泛认可和 ...

  7. deeplearning算法优化原理

    deeplearning算法优化原理目录· 量化原理介绍 · 剪裁原理介绍 · 蒸馏原理介绍 · 轻量级模型结构搜索原理介绍 1. Quantization Aware Training量化介绍1.1 ...

  8. [game]十字链表的AOI算法实现

    AOI主要有九宫格.灯塔和十字链表的算法实现.本文阐述十字链表的实现和尝试. 1. 基本原理 根据二维地图,将其分成x轴和y轴两个链表.如果是三维地图,则还需要维护多一个z轴的链表.将对象的坐标值按照 ...

  9. O(1)效率的表面模糊算法优化。

    很久没有写文章了,主要是最近一段时间没有以前那么多空暇空间,内存和CPU占用率一致都很高,应前几日群里网友的要求,今天发个表面模糊的小程序来找回之前写博客的热情吧. 国内我认为,破解表面模糊的原理的最 ...

随机推荐

  1. vscode 新建 springboot java项目

    vscode 新建 springboot java项目 1. 安装javaJDK 软件下载 下载地址: https://www.oracle.com/technetwork/java/javase/d ...

  2. 单选框 改成 复选框 的css样式

    fillEditorFakeTable.less /* add for the global title checkbox fake */ .fake-checkbox { display: inli ...

  3. tf.slice()函数详解(极详细)

    目录 1.官方注释 2.参数解释 3.例子 参考 @(tf.slice()函数详解 ) tf.slice()是TensorFlow库中分割张量的一个函数,其定义为def slice(input_, b ...

  4. java-打印流(新手)

    实例:1.直接输出到文件里面. import java.io.*; //打印流->保持数据原样性并且打印.(各种数据类型.) public class Dyl { public static v ...

  5. VMware虚拟机安装Mac OS X 10.12

    VMware Workstation Pro 14 安装Mac OS X 10.12 下面是所需要的补丁工具及镜像 VMware Workstation unlocker-master(OS X 虚拟 ...

  6. angualrjs 总结 随记(三)

    $sanitize和$sce服务的使用方法 $sanitize会把标签的属性都移除,以及绑定在元素上的事件.仅保留了标签和内容 $q服务的使用1. 创建一个Service,去服务器读取数据: 2. 在 ...

  7. Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例

    第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...

  8. Vue 使用百度地图 实现搜索 定位

    要求能定位到国外 及 查看了文档 百度支持东南亚大部分地区  满足需求 从而使用百度地图 <template> <div class="addHospital"& ...

  9. 远程调试docker构建的weblogic

    环境信息 OSType: CentOS Linux 7 (Core) x86_64 3.10.0-957.21.3.el7.x86_64 DockerVersion: 19.03.8 Mirrors: ...

  10. css第二波

    目录 css第二波 盒子模型 浮动 三种取值 清除浮动 浮动页面布局 溢出 定位 相对定位 relative(相对定位) 绝对定位 absolute(绝对定位) 固定定位 fixed(固定) 模糊框 ...