(PAT乙级) 1084 外观数列 (C语言实现,不要使用strcat)

外观数列是指具有以下特点的整数序列:

d, d1, d111, d113, d11231, d112213111, ...

它从不等于 1 的数字 d 开始,序列的第 n+1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对应 d1)和 1 个 1(对应 11),所以第 3 项就是 d111。又比如第 4 项是 d113,其描述就是 1 个 d,2 个 1,1 个 3,所以下一项就是 d11231。当然这个定义对 d = 1 也成立。本题要求你推算任意给定数字 d 的外观数列的第 N 项。

输入格式:

输入第一行给出 [0,9] 范围内的一个整数 d、以及一个正整数 N(≤ 40),用空格分隔。

输出格式:

在一行中给出数字 d 的外观数列的第 N 项。

输入样例:

1 8

输出样例:

1123123111
题目分析:

本题和 PTA 1078压缩字符串一题比较类似https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805262018265088

不过需要注意的是 strcat的效率问题,strcat在追加字符上细性能比较差,本题如果使用strcat实现 +=字符的效果会出现运行超时的情况

而且,本题的结果会比较长,建议使用100000以上的数组空间!

如何优化strcat?

这里我的做法是使用index索引代替,使用index索引时间上能缩小非常大的时间。下图中如果使用strcat会超过400ms,使用索引之后反而只需要4ms

image-20240322153020918

#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>void reverse_str(char *str){int left=0,right=strlen(str)-1;char ch;while(left<right){ch=str[left];str[left]=str[right];str[right]=ch;left++;right--;	}
}char* to_string(int num){char* str=calloc(500,sizeof(char));memset(str,'\0',sizeof(str));int index=0;while(num!=0){str[index++]=(num%10)+'0';num/=10;}reverse_str(str);return str;
}char* getnext(char *str){int num[500];char *nstr=calloc(100000,sizeof(char));memset(num,0,sizeof(num));int i,j,index=0;num[str[0]]++;for(i=1;str[i]!='\0';i++){if(str[i]!=str[i-1]){nstr[index++]=str[i-1];nstr[index++]=num[str[i-1]]+'0';
//			strcat(nstr,ch);num[str[i-1]]=0;}num[str[i]]++;}int end=strlen(str)-1;nstr[index++]=str[end];nstr[index++]=num[str[end]]+'0';
//	strcat(nstr,ch);return nstr;
}int main() {int d,n,i;char str[100000]="";scanf("%d %d",&d,&n);str[0]=d+'0';char *next,*cur=str;for(i=2;i<=n;i++){next=getnext(cur);cur=next;
//  	printf("%s\n",str);}printf("%s\n",cur);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应急响应?流量分析?你会吗?

应急响应 基本思路&#xff1a; 收集信息&#xff1a;收集客户信息和中毒主机信息&#xff0c;包括样本判断类型&#xff1a;判断是否是安全事件&#xff0c;何种安全事件&#xff0c;勒索、挖矿、断网、DoS 等等抑制范围&#xff1a;隔离使受害⾯不继续扩⼤深入分析&#xf…

建立一个高效协作的团队从《团队章程》开始

《团队章程》 项目资源分为团队资源&#xff08;人力&#xff09;和实物资源。而项目资源管理的目的拿今天最流行的说法就是降本增效&#xff0c;那么建立一个高效协作的团队从《团队章程》开始&#xff0c;以某供应链团队的团队章程&#xff08;简化&#xff09;举例&#xf…

puppeteer使用示例云顶之弈官网

自己从0到1开发的&#xff0c;微信小程序【云顶宝藏】求求点个5星好评吧&#xff01; 需求&#xff1a;拿到所有英雄的信息 思路&#xff1a;点击每个英雄&#xff0c;进入英雄详情页&#xff0c;拿信息&#xff0c;并返回&#xff0c;继续下一个英雄** 最终效果 本地环境 win…

如何搭建DolphinScheduler服务并结合内网穿透公网远程任务调度

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

由vue2版本升级vue3版本遇到的问题

一、vuedraggable 由vue2版本升级vue3版本后,可能会遇到以下几种bug: 1、vue3+vuedraggable报错TypeError: Cannot read properties of undefined (reading ‘updated’):这个一般是因为插件使用语法有问题,vue3版本的插件使用时,v-for不能 自己手写,由插件提供的语法实…

与AI机器共存的三个层次

概述 当前我们无法不与AI机器共存。 或者说&#xff0c;在不远的近日&#xff0c;不能与AI机器和谐共处的人&#xff0c;就有可能会被淘汰。 新的生产革命&#xff0c;或许已经到来&#xff0c;只是我们身在此山中&#xff0c;当局者迷而已。 三个层次 API(Application Pr…

C语言学习 四、选择与循环

4.1关系表达式与逻辑表达式 算术运算符的优先级高于关系运算符关系运算符的优先级高于逻辑与 和 逻辑或运算符相同优先级的运算符从左到右进行结合 【例】 表达式 5 > 3 && 8 < 4 - !0 的最终值为多少 4.2 if-else语句 4.2.1 if-else单分支语句 if判断条件&am…

力扣日记3.21【贪心算法篇】45. 跳跃游戏 II

力扣日记&#xff1a;【贪心算法篇】45. 跳跃游戏 II 日期&#xff1a;2024.3.21 参考&#xff1a;代码随想录、力扣 45. 跳跃游戏 II 题目描述 难度&#xff1a;中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转…

C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int x,m;m ((x4*5,x*5),x25);printf("(x4*5,x*5),x25 %d\n",m);//x4*520//x*5100//x2545return 0; } 结果如下&#xff1a;

网络仿真3-NS2协议修改和移植

Ns2实现原理 OTcl与C关联 执行路径&#xff1a;Tcl->Otcl->C 返回路径&#xff1a;C->Otcl->Tcl NS2协议修改和移植 NS2中的各种网络协议在底层通过C实现&#xff0c;在网络仿真过程中最终通过调用底层C代码实现网络行为、算法、功能等各种仿真 NS2协议修改&…

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意&#xff1a;必须要新增一个&#xff0c;或者删除一个&#xff0c;或者替换一个&#xff0c;所以不能相等1.如果s和t相等&#xff0c;返回false,如果s和t长度差大于1…

AOP+MySQL实现一个简历的日志收集工具

一、自定义日志注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** Description 日志监控自定义注解*/ Target({ElementType.METHOD, ElementTyp…

【数据库系统】SQL和T-SQL

第四章 SQL 基本内容 系统结构、DDL、DML、视图、数据控制、嵌入式SQL SQL介绍 特点 一体化&#xff1b;面向集合操作&#xff1b;非过程化语言&#xff1b;可以单独写&#xff0c;也可以作为嵌入式语言&#xff08;JDBC&#xff09; 体系结构 数据库存储结构 逻辑存储结构 面…

AES对称和RSA非对称加密登录接口参数

使用RSA非对称加密AES对称加密 加密类型&#xff1a; RSA&#xff1a;是一种非对称加密算法。它使用一对密钥&#xff08;公钥和私钥&#xff09;&#xff0c;其中公钥可以公开给任何人&#xff0c;用于加密数据&#xff1b;而私钥需要保密&#xff0c;用于解密数据。AES&#…

小程序 转发 功能

mina/pages/food/info.wxml <import src"../../wxParse/wxParse.wxml" /> <view class"container"> <!--商品轮播图--> <view class"swiper-container"><swiper class"swiper_box" autoplay"{{autop…

在vscode中使用git-新手向

Git 应该是必学的版本同步工具&#xff0c;是代码管理的好帮手。 可是对新手来说上手还是有一丢丢门槛&#xff0c;结合 vscode 同步非常方便。 可实现可视化代码变化&#xff0c;提醒自己记录版本修改内容。非常好用。 在 VSCode 中将项目上传至 GitHub 私有仓库基本步骤 确保…

基于ssm电子竞技管理平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

2024上半年软考报名时间及费用汇总!最新!

2024上半年软考考试时间为5月25-28日&#xff0c;2024年上半年软考全国报名平台入口3月18日开通&#xff0c;由此可知各地报名时间将会从3月份陆续开始。各地报名时间不同&#xff0c;且部分地区报名持续时间很短&#xff0c;请大家尽早报名&#xff0c;以免错过。 2024上半年…

java:基于BeanDeserializer实现自定义的Java bean 解析器

JsonDeserializer 关于jackson实现自定义的对象解析器&#xff0c;最常用的方式就是继承顶级抽象类(com.fasterxml.jackson.databind.JsonDeserializer) 来实现,比如下面的代码实现 // 自定义的JavaBean class Person {private String name;private int age;// 标准的getter和…

Prometheus(四):VMware Vsphere监控及数据展示

目录 1 vmware exporter安装配置1.1 vmware exporter介绍1.2 安装 - 使用kubernetes部署1、下载2、修改配置文件3、执行安装4、查看 1.3 安装-使用docker的方式1.4 Prometheus配置1.5 Grafana配置&#xff08;模板页面还需要修改&#xff09; 总结 1 vmware exporter安装配置 …