C/C++每日一练(20230507) 数列第n项值I/II、简化路径

news2024/9/26 3:29:50

目录

1. 求数列的第n项的值  ※

2. 求数列的第n项的值 II  ※

3. 简化路径  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 求数列的第n项的值

已知数列:2,4,4,4,6,6,6,6,6,8,8,8,8,8,8,8,...求第n项的值

出处:

https://edu.csdn.net/practice/27223961

代码:

#include <iostream>
int main()
{
    unsigned int N;
    std::cout << "Please enter the value of N: ";
    std::cin >> N;
    if (N % 2 != 0)
    {
        std::cout << "Please enter an even number greater than zero!" << std::endl;
        return -1;
    }
    int oddCount = 1;
    int printCount = 0;
    for (int i = 2; i <= N; i += 2)
    {
        for (int j = 0; j < oddCount; j++)
        {
            std::cout << i << " ";
            printCount++;
            if (printCount == N)
            {
                std::cout << "<---这个就是第N = " << N << "个数。" << std::endl;
                return 0;
            }
        }
        oddCount += 2;
    }
    return 0;
}

以上是原题的答案,但从题目上看没有说只求偶数项的值。修改为:

```c++
#include <iostream>
int main()
{
    unsigned int N;
    std::cout << "Please enter the value of N: ";
    std::cin >> N;
    int oddCount = 1;
    int printCount = 0;
    for (int i = 1; i <= N; i++)
    {
        for (int j = 0; j < oddCount; j++)
        {
            std::cout << i*2 << " ";
            printCount++;
            if (printCount == N)
            {
                std::cout << "<---这个就是第N = " << N << "个数。" << std::endl;
                return 0;
            }
        }
        oddCount += 2;
    }
    return 0;
}
```


2. 求数列的第n项的值 II

 已知一数列:1,3,3,5,5,5,7,7,7,7,9,9,9,9,9,11,11,11,11,11,11,11.....请根据规律求出第n项的值。

例如:

n=4 时,其值为5,
n=11时,其值为9. 

输入格式 一个自然数n,(0<n<1000)

输出格式 一个整数,即第n项的值。

样例输入:4
样例输出 :5

出处:

https://edu.csdn.net/practice/27223962

代码:

#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin>>a;
    int n=1,count=1,num=1;
    for(int i=0;i<a;i++)
    {
        if(count > n)
        {
            num+=2;
            n++;
            count=1;
            i--;
        }
        else
        {
        cout << num << ",";    
        count++;
        }
    }
    cout << endl;
    cout << num;
    return 0;
}

以上是原题的答案,数列输出最后一项后应该去掉“,”:

···c++

#include <iostream>
using namespace std;
int main(){
    int a,b;
    cin>>a;
    int n=1,count=1,num=1;
    for(int i=0;i<a;i++)
    {
        if(count > n)
        {
            num+=2;
            n++;
            count=1;
            i--;
        }
        else
        {
        cout << num;    
        count++;
        if (i+1 < a)
            cout << ",";
        }
    }
    cout << endl;
    cout << num;
    return 0;
}
```


3. 简化路径

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

  • 始终以斜杠 '/' 开头。
  • 两个目录名之间必须只有一个斜杠 '/' 。
  • 最后一个目录名(如果存在)不能 以 '/' 结尾。
  • 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。

返回简化后得到的 规范路径 。

示例 1:

输入:path = "/home/"
输出:"/home"
解释:注意,最后一个目录名后面没有斜杠。 

示例 2:

输入:path = "/../"
输出:"/"
解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。

示例 3:

输入:path = "/home//foo/"
输出:"/home/foo"
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例 4:

输入:path = "/a/./b/../../c/"
输出:"/c"

提示:

  • 1 <= path.length <= 3000
  • path 由英文字母,数字,'.''/' 或 '_' 组成。
  • path 是一个有效的 Unix 风格绝对路径。

以下程序实现了这一功能,请你填补空白处内容:

```c++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char *simplifyPath(char *path)
{
    int len = strlen(path);
    if (len == 0)
    {
        return path;
    }
    char *p = path;
    int *indexes = malloc(len * sizeof(int));
    int depth = 0;
    int name_start = 1;
    while (*p != '\0')
    {
        if (*p == '/')
        {
            if (p > path && *(p - 1) != '/' && *(p - 1) != '.')
            {
                name_start = 1;
            }
        }
        else if (*p == '.')
        {
            if (*(p + 1) == '\0' || *(p + 1) == '/')
            {
                p += 1;
            }
            else if (*(p + 1) == '.' && (*(p + 2) == '\0' || *(p + 2) == '/'))
            {
                if (depth > 0)
                {
                    depth--;
                    name_start = 1;
                }
                p += 2;
            }
            else
            {
                indexes[depth++] = p - path;
                while (*p != '/' && *p != '\0')
                {
                    p++;
                }
            }
            if (*p == '\0')
            {
                break;
            }
        }
        else
        {
            if (name_start && depth >= 0)
            {
                indexes[depth++] = p - path;
                name_start = 0;
            }
        }
        p++;
    }
    int i;
    char *result = malloc(len + 1);
    char *q = result;
    if (depth <= 0)
    {
        *q++ = '/';
    }
    else
    {
        for (i = 0; i < depth; i++)
        {
            ____________________;
        }
    }
    *q = '\0';
    return result;
}
int main(int argc, char **argv)
{
    if (argc != 2)
    {
        fprintf(stderr, "Usage: ./test path\n");
        exit(-1);
    }
    printf("%s\n", simplifyPath(argv[1]));
    return 0;
}
```

出处:

https://edu.csdn.net/practice/27223963

原题答案选择项为:

p = path + indexes[i];
*q++ = '/';
while (*p != '/')
{
    *q++ = *p++;
}

测试未通过,改用c++ 

代码:

#include<iostream>
#include<vector>
#include<cstring>
#include<sstream>
#include<stack>

using namespace std;

string simplifyPath(string path) {
    vector<string> v;
    stringstream ss(path);  // 使用字符串流方便处理
    string ans="", s="";
    while (getline(ss, s, '/')) {  // 按照'/'分割路径
        if (s == "." || s == "") {
            continue;
        }
        else if (s == "..") {  // 遇到".."弹出上一级目录
            if (v.size() > 0) {
                v.pop_back();
            }
        }
        else {
            v.push_back(s);
        }
    }
    if (v.size() == 0) {
        ans = "/";
    }
    else {
        for (const string& s: v) {
            ans += "/" + s;
        }
    }
    return ans;
}

int main() {
    string path = "/home/";
    cout << simplifyPath(path) << endl;
    path = "/../";
    cout << simplifyPath(path) << endl;
    path = "/home//foo/";
    cout << simplifyPath(path) << endl;
    path = "/a/./b/../../c/";
    cout << simplifyPath(path) << endl;
    return 0;
}

输出:

/home
/
/home/foo
/c


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

摘要:PostgreSQL开发技术基础:过程与函数

原文地址 6.0 Language SQL与PL/pgSQL PL / PgSQL是基于SQL的特定于PostgreSQL的过程语言 。它有循环&#xff0c;variables&#xff0c;错误/exception处理等等。并不是所有的SQL都是有效的PL / PgSQL&#xff0c;正如你发现的那样&#xff0c;例如&#xff0c;你不能在没有…

Nature:时松海课题组揭示调控大脑新皮层神经元空间精细结构排布和环路组装的新机制

2022年12月7日&#xff0c;清华大学生命科学学院、清华-IDG/麦戈文脑科学研究院、生命科学联合中心、生物结构前沿研究中心时松海教授课题组在Nature杂志以长文的形式在线发表了题为“Patterned cPCDH expression regulates the fine organization of the neocortex”&#xff…

Python心经(2)

有关数字类型&#xff0c;字符串&#xff0c;函数 目录 有关数字类型&#xff0c;字符串&#xff0c;函数 数字 字符串 索引操作 切片操作 单个字符编码 运算符 还有一些常用的内置函数 Python输入函数 输出函数print()语法 python的函数也能给默认值 Python是个脚…

什么是事件驱动的微服务架构?

对于许多关键应用程序功能&#xff0c;包括流媒体和电子商务&#xff0c;单体架构已不再足够。随着实时事件数据和云服务使用的需求增加&#xff0c;许多现代应用程序&#xff0c;如Netflix和Lyft&#xff0c;已经转向了事件驱动的微服务方法。分离的微服务可以独立运行&#x…

体外诊断(IVD)高速发展

体外诊断&#xff08;IVD&#xff09;实际一直是临床的重要组成部分。体外诊断&#xff0c;是指通过对人体样本(血液、体液、组织等)进行检测而获取临床诊断信息&#xff0c;进而判断疾病或机体功能的产品和服务&#xff0c;其检测原理和方法涉及免疫学、微生物学、分子生物学等…

Cursor设置中文版 以及简单实用教程集成 GPT4 的代码神器 Cursor

官网&#xff1a;cursor.so 快捷键 ctrl K&#xff0c; 中英文提交需求&#xff0c;&#xff08;刚开始我整蹩脚的英语&#xff0c;后来发现支持中文&#xff09; 自动写代码 自动补充代码 自己修改代码 自动检查、完善代码 自己本地测试 然后再重复上面操作直到能用 最后让它…

ZooKeeper知识回顾(分布式协调框架,本质是分布式小文件存储系统,以分布式集群部署)

Apache ZooKeeperhttps://zookeeper.apache.org/官网为: 名字.apache.org 1.zookeep概念 一个团队里面&#xff0c;需要一个leader&#xff0c;leader是干嘛用的&#xff1f; &#xff08;分布式协调框架&#xff09; 1.管理什么的咱不说。 2.外面的人&#xff0c;想…

AI大神吴恩达与OpenAI官方合作推出的ChatGPT提示工程课,到底在讲什么?

ChatGPT提示工程课程&#xff0c;吴恩达&OpenAI 概述 本课程将着重介绍指令调优LM的开发最佳实践&#xff0c;以帮助开发人员利用LM技术构建聊天机器人等应用程序。 亮点 &#x1f4da; LM可用于快速构建软件应用程序&#xff0c;API可以使开发人员非常快速地构建。&#x…

怎么压缩照片到20k?

怎么压缩照片到20k&#xff1f;如今&#xff0c;手机摄影已经成为我们生活的一部分&#xff0c;我们经常使用手机拍照记录美好瞬间。但是&#xff0c;随着手机拍照像素的不断提高&#xff0c;照片的文件大小也越来越大&#xff0c;这使得手机的存储空间不够用&#xff0c;甚至在…

Vue核心 收集表单数据 过滤器

1.14. 收集表单数据 收集表单数据: 若: &#xff0c;则v-model收集的是value值&#xff0c;用户输入的就是value值。若: &#xff0c;则v-model收集的是value值&#xff0c;且要给标签配置value值。若: 没有配置input的value属性&#xff0c;那么收集的就是checked(勾选 or 未…

weblogic ssrf 漏洞复现

一.前言 Weblogic中存在一个SSRF漏洞&#xff0c;利用该漏洞可以发送任意HTTP请求&#xff0c;进而攻击内网中redis、fastcgi等脆弱组件。 二.环境搭建 在docker中开启环境 sudo docker-compose up -d sudo docker-compose ps #查看状态访问http://your-ip:7001/uddiexpl…

【C++】虚函数表 多态的原理 动态绑定和静态绑定

梳理虚函数表、多态原理、动静态绑定的知识 目录 一、虚函数表 二、多态的原理 三、动态绑定和静态绑定 一、虚函数表 在学习多态原理之前&#xff0c;我们需要了解一下虚函数表的概念 我们先一起来看下下面这段代码 // 这里常考一道笔试题&#xff1a;sizeof(Base)是多…

Centos7设置yum源

为什么要修改yum源呢&#xff1f; 因为默认的yum源下载速度很慢&#xff0c;所以我们需要修改yum源。我是用的阿里云的yum源 环境 虚拟机&#xff1a;VirtualBox 7.0.4 操作系统&#xff1a;CentOS 7 x86_64 查看默认的yum源 cd /etc/yum.repos.d将列出的所有默认yum源复…

unity愤怒的小鸟学习制作(一)

基础知识已经差不多了&#xff0c;现在开始模仿敲代码然后在模仿中熟悉软件和语法 视频链接和素材如下&#xff1a;视频 目录 第一部分&#xff1a;游戏逻辑1、新建2D工程2、创建三个场景3、导入游戏需要的资源4、开始编辑02-game4.1 裁切图片4.2 初步编辑4.3 实现小鸟的拖拽4…

【源码分析】从源码层面深度剖析Redisson实现分布式锁的原理

快速入门 引入redisson依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.16.0</version> </dependency>编写测试代码 public class RedissonTest {private static RedissonC…

SubMain GhostDoc Enterprise v2022 Crack

GhostDoc 是一个 Visual Studio 扩展&#xff0c;适用于需要使用可自定义模板从源代码生成 XML 注释、维护干净和最新文档、生成多种格式的帮助文档、在 Visual Studio 中使用智能源代码拼写检查器等的开发人员. GhostDoc 还有助于自动生成干净、有用的干净代码文档&#xff0c…

scratch统计距离学校远近 中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析2023年3月

目录 scratch统计距离学校远近 一、题目要求 1、准备工作 2、功能实现 二、案例分析

Elasticsearch:结合两全其美:Elasticsearch 与 BM25 和 HNSW 的混合搜索

就搜索算法而言&#xff0c;没有万能的解决方案。 不同的算法在不同的场景下效果更好&#xff0c;有时需要算法的组合才能达到最好的效果。 在 Elasticsearch 中&#xff0c;一种流行的组合搜索算法的方法是使用混合搜索&#xff0c;将用于文本搜索的 BM25 算法与用于最近邻搜索…

数据结构与算法十 并查集

一 并查集 并查集是一种树型的数据结构 &#xff0c;并查集可以高效地进行如下操作&#xff1a; 查询元素p和元素q是否属于同一组合并元素p和元素q所在的组 1.1 并查集结构 并查集也是一种树型结构&#xff0c;但这棵树跟我们之前讲的二叉树、红黑树、B树等都不一样&#xf…

【Stable Diffusion】基本概念之hypernetwork

1.基本概念 hypernetwork&#xff0c;中文名为超网络&#xff0c;是一种神经网络架构,它允许动态生成神经网络的参数(权重)。简而言之,hypernetwork可以生成其他神经网络。 在Stable Diffusion中,hypernetwork被用于动态生成分类器的参数&#xff0c;为Stable Diffusion模型添加…