在C ++中找到给定数字的最小排列

在此问题中,给我们一个大数N。我们的任务是找到给定数的最小排列。

让我们举个例子来了解这个问题,

输入

N = 4529016
输出结果
1024569

解决方法

解决此问题的简单方法是将长整数值存储到字符串中。然后,我们将对字符串进行排序,这是我们的结果。但是,如果有任何前导零,我们将在第一个非零值之后移动它们。

该程序说明了我们解决方案的工作原理,

示例

#include <bits/stdc++.h>

using namespace std;

string smallestNumPer(string s) {

   int len = s.length();

   sort(s.begin(), s.end());

   int i = 0;

   while (s[i] == '0')

      i++;

   swap(s[0], s[i]);

   return s;

}

int main() {

   string s = "4529016";

   cout<<"这个数字是 "<<s<<endl;

   cout<<"The smallest permutation of 这个数字是 "<<smallestNumPer(s);

   return 0;

}

输出结果
这个数字是 4529016

The smallest permutation of 这个数字是 1024569

以上是 在C ++中找到给定数字的最小排列 的全部内容, 来源链接: utcz.com/z/322897.html

回到顶部