您的位置:首页 > 其它

ACM--Genetic Code(POJ 2558)

2015-08-12 23:00 399 查看
<span style="font-family:Arial, Helvetica, sans-serif;">由于题目只要求一组解,所以在使用DSF算法时,递归的时候要有返回值,这样可以马上退出,求的一组解。</span>
<span style="font-family:Arial, Helvetica, sans-serif;">但如果是求出所有解,则无需返回值。</span>
<span style="font-family:Arial, Helvetica, sans-serif;">
</span>
<span style="font-family:Arial, Helvetica, sans-serif;"></span><pre name="code" class="cpp">#include<stdio.h>
char a[5002];
char b[4]="NOP";

int Ok(int l)
{
int i,j;
for(i=0;i<(l+1)/2;i++)
{
for(j=0;j<=i;j++)
{
if(a[l-i+j]!=a[l-2*i+j-1])break;
}
if(j>i)return 0;
}
return 1;
}
int fun(int i)
{
if(i>=5000)
return 1;
for(int j=0;j<3;j++)
{
a[i]=b[j];
if(!Ok(i))
continue;
//fun(i+1);
if(fun(i+1))
return 1;
}
return 0;
}

int main()
{

int n;
fun(0);
while(scanf("%d",&n)!=EOF,n)
{
for(int i=0;i<n;i++)
printf("%c",a[i]);
printf("\n");
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: