arrays - 两个相同的子序列

标签 arrays algorithm

我试图找到一个有效的算法(一个函数),它接受一个整数数组a[1..2n],如果a中表示的序列可以分成两个长度n相同的子序列,则返回true,否则返回false。
我真的不知道从哪里开始我在考虑递归——这样的序列必须以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/

相关文章:

python - numpy.sort 的逆映射

c - 在c中分配指针的大数组(9mb)

algorithm - 换位表?

java - 多次检查值是否在数组中的最快方法

mysql - 在 Redis 中构建 'messages read' 类型的队列系统的解决方案?

c++ - 在矩形之外查找网格起点

php - 使用php将字符串转换为数组

javascript - 使用 javascript 创建具有多个属性的对象数组

c - C语言中free的奇怪(未定义?)行为

algorithm - 对复发和大 O 感到困惑