代码应该在整数数组上执行完美的混洗。完美的混洗是通过交错前半部分和后半部分获得的序列,总是将中间的卡片移到前面。例如,{1,2,3,4,5,6,7,8,9,10}的完美混洗是{6,1,7,2,8,3,9,4,10,5}我的代码的问题是它没有显示期望的输出,而是提前显示.The numbers.Thank numbers.Thank
代码如下:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int userArray[25], a[20], b[20];
int i, sizeofarray, half, j, m;
A: cout << "Enter SIZE of even numbers: ";
cin >> sizeofarray;
if (sizeofarray % 2 != 0)
{
cout << "Wrong Input!!,you should enter an even size (2,4,...)";
system("PAUSE");
system("CLS");
goto A;
}
cout << "Enter numbers: \n";
for (i = 0; i < sizeofarray; i++)
{
cin >> userArray[i];
}
// for(i=0;i<sizeofarray;i++)
//{
half = sizeofarray / 2;
cout << "The perfect shuffle is: \n";
for (j = 0; j <= half; j++)
{
a[j] = userArray[j];
cout << a[j];
}
for (m = half; m <= sizeofarray; m++)
{
b[m] = userArray[m];
cout << b[m];
}
//}
return 0;
}发布于 2020-04-26 01:12:55
出于调试的原因,您应该将编写用户输入和编写算法本身的过程分开。因为使用代码编写的测试用例可以节省大量时间。
我会写这样的混洗算法:(编辑)
for(int i = 0; i < half; i++) {
shuffledArray[i*2+1] = arr[i];
shuffledArray[i*2] = arr[i+half];
}这个示例假设您的输出(随机排列)数组名为shuffleArray,输入数组名为arr,并且您有一个名为size的整数变量。
它只能与二进制随机播放一起工作。如果你想洗牌3或4,它可能会有点不同。
https://stackoverflow.com/questions/61429403
复制相似问题