2014-12-06 36 views
-1

[我的StackOverflow的第一个问题,因此,HI!]找到没有的最佳算法。对一个序列转换为回文序列所需的步骤

我不知道的规则是什么左右的地方,但我有一个简单的问题,如以下...

序列23,45,23和23,45,56,23,23,56,45,23是回文的例子。序列23,45,56不是回文。 序列23,32也不是回文。长度为1 的序列总是回文。一个给定的整数序列可以分解成若干部分,使得它们中的每一个都是回文。考虑 序列34,45,34,56,34。这可以被分解成3回文序列 与构成34,45,34中的第一,56构成 第二和34构成第三。它也可以在每个包含单个数字的回文序列中被打断。

我们要确定最小数K,使得在给定 序列可以分解成K回文序列。

+0

为什么downvote?我认为这是一个非常清楚镜框问题... – 2014-12-06 06:27:49

+0

我不是谁downvoted的人,但也可能是因为它违反了哪些是活跃在codechef ZCO挑战的行为(这是积极的,甚至现在) – MysticForce 2016-09-25 09:44:50

回答

0
#include<iostream> 
using namespace std; 

int main() { 

    int n; 
    cin>>n; 
    int num[n]; 
    for(int i=0;i<n;i++) 
     cin>>num[i]; 
    int c[n]; 
    int co=0; 
    for(int i=0;i<n;i++){ 
     if(num[i]!=-1){ 
     for(int j=i+1;j<n;++j){ 
      if(num[i]==num[j]){ 
       num[i]=num[j]=-1; 
       c[co]=j; 
       co++; 
       break; 
      } 
     } 
     } 
    } 
    if(n-co*2==0){ 
     cout<<1; 
    } 
    else{ 
     cout<<n-co*2; 
    } 

}