我相信,使用for循环减少它,但我不知道如何。
有没有办法减少这段代码?
num1 = 1, num2 = 2, num3 = 3;
display(num1, num2, num3);
num1 = 1, num2 = 3, num3 = 2;
display(num1, num2, num3);
num1 = 2, num2 = 1, num3 = 3;
display(num1, num2, num3);
num1 = 2, num2 = 3, num3 = 1;
display(num1, num2, num3);
num1 = 3, num2 = 1, num3 = 2;
display(num1, num2, num3);
num1 = 3, num2 = 2, num3 = 1;
display(num1, num2, num3);
答案 0 :(得分:1)
在Java或C ++中,您可以使用数组数组。在Java 8+中,
int[][] nums = { { 1, 2, 3 }, { 1, 3, 2 }, { 2, 1, 3 }, { 2, 3, 1 },
{ 3, 1, 2 }, { 3, 2, 1 } };
Stream.of(nums).forEachOrdered(x -> display(x[0], x[1], x[2]));
C ++中的或,如
int nums[6][3] = { { 1, 2, 3 }, { 1, 3, 2 }, { 2, 1, 3 }, { 2, 3, 1 },
{ 3, 1, 2 }, { 3, 2, 1 } };
for (int i = 0; i < 6; i++) {
display(nums[i][0], nums[i][1], nums[i][2]);
}
答案 1 :(得分:1)
您可以使用c ++函数next_permutation()来获取[1,2,3]的所有排列,代码非常简单,就像这样
int num[3] = {1, 2, 3};
do
{
for (int j = 0; j < 3; j++)
{
cout << num[j];
}
cout << endl;
} while (next_permutation(num, num + 3));
有关排列的更多信息,您可以看到https://en.wikipedia.org/wiki/Permutation
答案 2 :(得分:0)
如果没有关于你想要达到的目标的额外信息,这很难回答,如果我使用的C ++看起来像这样,我会实现一个函数
void foo(int x, int y, int z)
{
cout << x << y << z;
}
void main
{
foo(1,2,3);
foo(2,1,3);
}
将是使代码更易于管理的一种方法......这取决于您尝试实现的目标。
或考虑用以下
替换foofoo(int x, int y, int z)
{
cout << x << y << z;
cout << x << z << y;
cout << z << x << y;
cout << z << y << x;
cout << y << z << x;
cout << y << x << z;
}