简单的练练手(华为机试题)

2024-05-26 00:58
文章标签 简单 华为 试题 练练手

本文主要是介绍简单的练练手(华为机试题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数
#include<iostream>
#include<string>
using namespace std;
int deletesub(string &str,const string &sub,int);
int main()
{  string str,sub;cin>>str>>sub;int n=sub.length();int num=deletesub(str,sub,n);cout<<num<<endl;cout<<str<<endl;          //输出删除后的字符串return 0;
}
int deletesub(string &str,const string &sub,int n)
{int m,flag=0,num=0;while(flag==0){m=str.find(sub);if(m<0)return num;else{str.erase(m,n);           //删除子串num++;}}
}


/*约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;
依此规律重复下去,直到圆桌周围的人全部出列*/
#include<iostream>
using namespace std;
struct node{int num;node *next;
};
node *creat(int n)
{node *q,*p,*head=NULL;for(int i=1;i<=n;i++){p=new node;p->num=i;if(head==NULL)head=p;elseq->next=p;q=p;}p->next=head;return p;
}
int main()
{  int n,k,m;cin>>n>>k>>m;node *l,*q;l=creat(n);l=l->next;for(int i=1;i<k;i++){q=l;l=l->next;}while(l->next!=l){for(int i=1;i<m;i++){q=l;l=l->next;}cout<<l->num<<"->";q->next=l->next;delete l;l=q->next;}cout<<l->num<<endl;delete l;return 0;
}

约瑟夫环变种: 
输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序

比如: 输入的随机数列为:3,1,2,4,初始计数值m=7,从数列首位置开始计数(数值3所在位置)
第一轮计数出列数字为2,计数值更新m=2,出列后数列为3,1,4,从数值4所在位置从新开始计数
第二轮计数出列数字为3,计数值更新m=3,出列后数列为1,4,从数值1所在位置开始计数
第三轮计数出列数字为1,计数值更新m=1,出列后数列为4,从数值4所在位置开始计数
最后一轮计数出列数字为4,计数过程完成。
输出数值出列顺序为:2,3,1,4。

• 要求实现函数: 
void array_iterate(int len, int input_array[], int m, int output_array[])
【输入】 int len:输入数列的长度;
int intput_array[]:输入的初始数列
int m:初始计数值
【输出】 int output_array[]:输出的数值出列顺序
【返回】 无
• 示例 
输入:int input_array[] = {3,1,2,4},int len = 4, m=7
输出:output_array[] = {2,3,1,4}

#include<iostream>
using namespace std;
struct node{int num;node *next;
};
node *creat(int len,int *input_array)
{node *p,*q,*head=NULL;for(int i=0;i<len;i++){p=new node;p->num=input_array[i];if(head==NULL)head=p;elseq->next=p;q=p;}p->next=head;return p;
}
int main()
{   int len,m,n=0;cin>>len;int *input_array=new int[len];for(int i=0;i<len;i++)cin>>input_array[i];int *output_array=new int[len];cin>>m;node *l=creat(len,input_array);node *q;l=l->next;while(l->next!=l){for(int i=1;i<m;i++){q=l;l=l->next;}m=l->num;output_array[n++]=l->num;q->next=l->next;delete l;l=q->next;}output_array[n]=l->num;delete l;for(int i=0;i<n;i++)cout<<output_array[i]<< " ";cout<<output_array[n]<<endl;delete []input_array;delete []output_array;return 0;
}


这篇关于简单的练练手(华为机试题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003109

相关文章

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建