根据数字的优先级,翻译如下:基于数字优先级的下一个更大的数字

2023年 8月 29日 41.2k 0

根据数字的优先级,翻译如下:基于数字优先级的下一个更大的数字

在正常的数字系统中,0是最小的数字,而9是最大的数字。在这个问题中,我们将得到一个长度为10的列表,从索引0到索引9表示一个数字,它表示该数字的优先级,列表将按照递增顺序排列,这意味着出现在最后索引的数字具有最高的优先级。我们还将得到一个数字,我们需要找到比当前数字稍大的下一个数字。

Input 1:
Given number = “123”
Given array = { 9, 2, 3, 6, 8, 1, 0, 5, 4, 7}
Output: 132

登录后复制

Explanation

从给定的优先级数组中,我们可以看到1的优先级大于2和3。与2相比,3的优先级更高。因此,如果给定数字的下一个排列将通过交换2和3来实现。

Input 2:
Given number = 132
Given array = { 9, 2, 3, 6, 8, 1, 0, 5, 4, 7}
Output: 132

登录后复制

Explanation

From the given priority array, we can see that the priority of 1 is greater than both 2 and 3. Priority of 3 is greater as compared to of 2. So, there will be no next permutation available.

方法

In this approach, we will use the concept of the standard template library (STL) provided by the C++ programming language to get the next permutation. Let us see the steps −

  • 首先,我们将得到下一个数字的数字,以及一个按升序表示数字优先级的数组。

  • 我们将调用预定义的函数来找到大于当前给定数字的下一个数字。

  • We will define a function that take the parameter given number and array.

  • We will define a global array and store the priority of each digit taken from the given array to use later.

  • 我们将把给定的数字转换为字符串,以便在其上应用下一个排列函数。

  • We will define a custom function that will used to compare the characters of the string in the next permutation function of the stl.

  • 获取下一个排列后,我们将把字符串转换为整数并返回。

Example

的中文翻译为:

示例

#include
using namespace std;
// priority array or array in which the priority of each digit will be stored
int prio[10];
// defining the compare function
bool compare(char& a, char& b){
return prio[a-'0'] < prio[b-'0'];
}
// function to get the next permuatation
int nextNum(int n, int arr[]){
for(int i=0; i

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论