小苯的九宫格,小苯的好数组(排序),小苯的数字合并(字典树,前缀和)

2024-05-27 23:12

本文主要是介绍小苯的九宫格,小苯的好数组(排序),小苯的数字合并(字典树,前缀和),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小苯的九宫格

题目描述

 

运行代码

#include<iostream>
using namespace std;
int main(){int a[10];for(int i=1;i<=9;i++){cin>>a[i];} string b;cin>>b;for(int i=0;i<b.size();i++){int p=b[i]-'0';cout<<a[p];}
}

代码思路

  1. 定义数组:首先,定义了一个整型数组a,用于存储10个整数。但需要注意的是,在C++中,数组的索引通常从0开始,而不是从1开始。然而,这里的循环是从1开始的,这意味着数组的第一个元素a[0]没有被使用。

  2. 输入数组:通过一个for循环,从a[1]a[9]输入9个整数。这意味着a[0]的值是未定义的(可能包含垃圾值)。

  3. 输入字符串:接着,代码读取一个字符串b

  4. 处理字符串并输出数组元素:再次使用一个for循环遍历字符串b的每一个字符。

    • 在循环内,首先将字符b[i]转换为其对应的整数p。这是通过从字符中减去字符'0'的ASCII值来实现的。在ASCII中,数字字符'0'到'9'是连续的,所以这种减法可以得到字符所代表的整数值。
    • 然后,代码尝试输出数组a中索引为p的元素。但是,由于之前的数组输入是从1开始的,如果b中的某个字符表示的数字是0(即p为0),则程序会尝试访问a[0],这是一个未定义的值。此外,如果b中的某个字符表示的数字大于9(即p大于9),则程序会访问数组a的越界位置,这会导致未定义行为(通常是程序崩溃)

小苯的好数组(排序)

题目描述

 

运行代码

#include<iostream>
#include<vector>
using namespace std;
inline int FN(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f; 
}
int a[200010];
signed main(){int n=FN();for(int i=1;i<=n;i++)a[i]=FN();bool o=0;for(int i=1;i<=n;i++)o|=(a[i]<a[i-1]);if(o)cout<<n<<endl;else cout<<0;return 0;
}

代码思路

  1. FN 函数
    这是一个用于读取整数的函数,它可以处理正数和负数。

    • 首先,它初始化一个整数 x 为 0 和一个标志 f 为 1(用于处理负数)。
    • 然后,它读取一个字符 c 并检查它是否是数字。如果不是,它会继续读取直到找到数字或负号。
    • 如果找到负号,它将 f 设置为 -1。
    • 接下来,它会读取所有的数字字符,并将它们转换为整数。
    • 最后,它返回 x * f,这样如果 f 是 -1,那么 x 就会被取反。
  2. 主函数

    • 首先,它使用 FN 函数读取一个整数 n,表示要读取的整数数量。
    • 然后,它使用一个 for 循环读取 n 个整数并存储在数组 a 中。注意,这里从 a[1] 开始存储,但数组通常从 a[0] 开始。
    • 接下来,它使用一个布尔变量 o 来跟踪数组是否是降序的。它初始化为 false(在C++中,bool 类型的 0 被视为 false)。
    • 它再次使用一个 for 循环遍历数组,并检查每个元素是否小于其前一个元素。如果是,它将 o 设置为 true。但是,这里有一个潜在的问题:当 i=1 时,a[i-1] 实际上是 a[0],而 a[0] 没有被初始化或赋值,这可能导致未定义的行为。
    • 最后,根据 o 的值,它输出 n 或 0

小苯的数字合并(字典树,前缀和)

题目描述

 

运行代码

#include <bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{int n;cin>>n;int a[200005];long long sum[200005];sum[0]=0;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i];}long long ans=0;if(n==1){return 0;}long long m=1e9;for(int i=1;i<=n;i++){if(a[i]<m){m=a[i];}ans=max(sum[n]-sum[i]-m,ans);ans=max(sum[i-1]-a[i],ans);}cout<<ans;return 0;
}

代码思路

  1. 输入与初始化:输入整数n,表示序列的长度。定义数组a[200005]存储序列中的每个元素。

    定义数组sum[200005]用于存储序列的累积和,其中sum[i]表示序列前i个元素的和。初始化sum[0]=0
  2. 读取序列与计算累积和:读取序列中的每个元素a[i],并计算累积和数组sum,使得sum[i] = sum[i-1] + a[i]

  3. 寻找分割点以最大化“不完美度”

    • 初始化变量ans为0,用于记录最大的“极差”。
    • 用一个变量m来追踪到目前为止序列中的最小值,初始值设为1e9(一个很大的数,确保任何正整数都会比它小)。
    • 遍历序列,对于每个位置i(从1到n):更新m为当前位置i处的元素a[i]和当前最小值m中的较小者。计算两种分割情况下的“不完美度”:第一种情况:分割点在i,左边部分的不完美度为当前m,右边部分的不完美度由累积和计算得来,即sum[n] - sum[i] - m
      • 第二种情况:实际上是一种特例,当分割点在i左侧的最后一个位置时,左边所有元素的总和减去a[i]
      • 更新ans为上述两种情况中的较大值。
  4. 输出结果:循环结束后,ans中存储了最大的“差”,将其输出。

这篇关于小苯的九宫格,小苯的好数组(排序),小苯的数字合并(字典树,前缀和)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

Java List排序实例代码详解

《JavaList排序实例代码详解》:本文主要介绍JavaList排序的相关资料,Java排序方法包括自然排序、自定义排序、Lambda简化及多条件排序,实现灵活且代码简洁,文中通过代码介绍的... 目录一、自然排序二、自定义排序规则三、使用 Lambda 表达式简化 Comparator四、多条件排序五、

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

正则表达式r前缀使用指南及如何避免常见错误

《正则表达式r前缀使用指南及如何避免常见错误》正则表达式是处理字符串的强大工具,但它常常伴随着转义字符的复杂性,本文将简洁地讲解r的作用、基本原理,以及如何在实际代码中避免常见错误,感兴趣的朋友一... 目录1. 字符串的双重翻译困境2. 为什么需要 r?3. 常见错误和正确用法4. Unicode 转换的

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Java如何根据文件名前缀自动分组图片文件

《Java如何根据文件名前缀自动分组图片文件》一大堆文件(比如图片)堆在一个目录下,它们的命名规则遵循一定的格式,混在一起很难管理,所以本文小编就和大家介绍一下如何使用Java根据文件名前缀自动分组图... 目录需求背景分析思路实现代码输出结果知识扩展需求一大堆文件(比如图片)堆在一个目录下,它们的命名规

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代