gpt4 book ai didi

c++ - 给定数字 block C++ 中的最大可能数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:32 26 4
gpt4 key购买 nike

<分区>

对于给定的数字 block 数( block 数大于 2 且小于 1000),打印最大可能的数字。

举个例子:

输入:

5 // Number of blocks of digits

9 // first block

98 // second

90 // third

5 // fourth

9 // fifth

输出:

9998905 // The biggest possible number

我在这个问题上做了一些工作,我找到了算法,它似乎适用于任何组合,但我在用 C++ 编写代码时遇到了问题

算法如下:

首先我将它们作为字符串输入,因为我可以更轻松地使用特定数字。然后我将每个数字的第一位数字与每个数字的第一位数字进行比较。并按升序排列它们。如果第一位数字相同,我将检查第二位数字,依此类推直到最后一位数字。如果两个数字的长度不同并且较小的是另一个的子串,我将较小的数字排在较大数字的前面。

正如我之前所说,这个算法工作正常,但我需要代码,因为我遇到了问题。

这是我到目前为止的工作:

#include <iostream>
#include <string>>
using namespace std;
int main()
{
int nums, maxsl = 0;
cin >> nums;
string s[nums];
for(int i = 0; i<nums; i++)
{
cin >> s[i];
if(s[i].length() > maxsl)
{
maxsl = s[i].length();
}
}
for(int i = 0; i<nums; i++)
{
for(int j = 0; j<nums; j++)
{
for(int k = 0; k<=maxsl; k++)
{
if(k<=s[i].length() && k<= s[j].length())
{
if(s[i][k]>s[j][k])
{
string t = s[i];
s[i] = s[j];
s[j] = t;
}
}
else
{
if(s[i].length() > s[j].length())
{
string t = s[i];
s[i] = s[j];
s[j] = t;
}
}

}
}

}

for(int i = 0; i<nums; i++)
{
cout << s[i];
}
}

但是对于这些代码,它只会按升序打印它们,而不是最大可能的数字。这是前面示例的输出:9890995

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com