gpt4 book ai didi

c++ - 调试关于排列的程序

转载 作者:行者123 更新时间:2023-11-28 05:51:25 25 4
gpt4 key购买 nike

最近我正在编写一个程序来生成固定数量的输入字母排列。比如我输入3、3、ABC,程序会按照字典序输出ABC、ACB、BAC。但是程序无法通过所有测试用例,我无法找出错误在哪里。请帮忙。

#include <iostream>
using namespace std;

int used[26], cou = 0, k, n, i;
string output;
string sorting(string x, int y)
{
char temp;
int i, j;
for (i = 0; i < y; ++i)
{
for (j = 0; j < y-1; ++j)
{
if (x[j]-'0' > x[j+1]-'0')
{
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
return x;
}

void out(int x, string y)
{
int i;
if (cou == k)
{
return;
}
if (x == n+1)
{
cout << output << endl;
++cou;
}
else
{
for (i = 0; i < n; ++i)
{
if (used[i] == 0)
{
used[i] = 1;
output[x-1] = y[i];
out(x+1, y);
used[i] = 0;
}
}
}
}

int main()
{
char inpi;
string inp, ha;
cin >> n >> k >> inp;
output.resize(n);
for (i = 0; i < 26; ++i)
{
used[i] = 0;
}
inp = sorting(inp, n);
out(1, inp);
}

最佳答案

我不确定我是否理解了这个问题。

撇开算法不谈,您应该知道标准字符串能够判断多长。因此 sorting 中的 y 参数是多余的。使用 x.size() 找到大小。

另一个问题是output[x] = y[i];。您没有设置 output 的大小:它是零。由于您正在寻找排列,我假设它的大小必须等于 y 的大小:output.resize( y.size() );

最后一件事:使用有意义的标识符。 y 可能适合编译器;对于人类来说,它可能定义了糟糕的一天。

关于c++ - 调试关于排列的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35199708/

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