arrays - 两个相同的子序列

标签 arrays algorithm

我试图找到一个有效的算法(一个函数),它接受一个整数数组 A[1..2N] 并在 A 中表示的序列可以分为两个相同的长度 N 的子序列时返回 true - 和否则为假。

我真的不知道从哪里开始。我在考虑递归 - 这样的序列必须以 A[1] 开始并以 A[2N] 结束,但下一步不是那么明显。

我会很感激一些帮助

最佳答案

如果您真的期望这样做,函数 CHECK() 将履行您的职责。

希望对你有帮助

int A[]={1,2,1,3,4,2,3,4};
int vis[10];

bool CHECK()
{
    vis[10]={0};
    int j=1;

    for(int i=0; i<10; i++)
    {
        if(vis[i]==1) continue;
        bool find = false;

        for(; j<10; j++)
        {
            if(A[i]==A[j])
            {
                find=true;
                vis[i]=1;
                vis[j]=1;
                j++;
                break;
            }
        }
       if(!find)
       {
           return false;
       }
   }
   return true;
}

关于arrays - 两个相同的子序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470646/

相关文章:

javascript - 递归解决方案: string permutation.无法在javascript中返回排列字符串数组

algorithm - 如何找出上升词(或从列表中变得更受欢迎的词)

python - 基本 friend 时间轴算法?

python - 确定(几乎)就地计算的处理顺序

algorithm - 谁能告诉我为什么我的算法是错误的?

javascript - 如何引用数组而不更改其内容

arrays - 使用 mexCallMATLAB 时避免复制数组

c - 使用fgets()和strtok()读取文本文件以分隔行中的字符串,从而产生不必要的行为

ios - swift 数组 : fatal error index out of range

algorithm - 为多个和找到一个没有除法的算法