我试图找到一个有效的算法(一个函数),它接受一个整数数组 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/