首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++完美混洗逻辑错误,我似乎不能修复它?

C++完美混洗逻辑错误,我似乎不能修复它?
EN

Stack Overflow用户
提问于 2020-04-26 01:03:46
回答 1查看 124关注 0票数 0

代码应该在整数数组上执行完美的混洗。完美的混洗是通过交错前半部分和后半部分获得的序列,总是将中间的卡片移到前面。例如,{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

代码如下:

代码语言:javascript
运行
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 01:12:55

出于调试的原因,您应该将编写用户输入和编写算法本身的过程分开。因为使用代码编写的测试用例可以节省大量时间。

我会写这样的混洗算法:(编辑)

代码语言:javascript
运行
复制
  for(int i = 0; i < half; i++) {
    shuffledArray[i*2+1] = arr[i];
    shuffledArray[i*2] = arr[i+half];
  }

这个示例假设您的输出(随机排列)数组名为shuffleArray,输入数组名为arr,并且您有一个名为size的整数变量。

它只能与二进制随机播放一起工作。如果你想洗牌3或4,它可能会有点不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61429403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档