📄 dna.txt
字号:
#include <stdio.h>
#include <algorithm>
using namespace std;
int n;
int len;
int data1[400];
int data2[200];
bool cmp(int x,int y)
{
return x<y;
}
void init()
{
int i;
scanf("%d",&n);
for(i=0;i<2*n;i++)
scanf("%d,",&data1);
for(i=0;i<=n;i++)
scanf("%d,",&data2);
}
int indata2(int x,int xx[],int n)
{
for(int i=0;i<n;i++)
if(xx==x) return i;
return -1;
}
int max(int x[],int n)
{
int i;
int m=-1;
for(i=0;i<n;i++)
if(x>m) m=x;
return m;
}
void spdp()
{
sort(data1,data1+2*n,cmp);
len=data1[0]+data1[2*n-1];
int p[100];
int q[100];
int i,j;
int p0=0;int q0=0;
int countp=1;int countq=1;
p[0]=0;q[0]=0;
int mid=n;
int head=0;
int countdata2=n+1;
while(head<mid-1)
{
int pi=data1[head];
int pk=max(p, countp);
int qj=max(q, countq);//this is setp2
int pk1;
int qj1;
int loc;
if((loc=indata2(pi-pk,data2,countdata2))>=0)
{
int flag=0;
for(i=0;i<countdata2;i++)
{
if(data2>=pi-qj)
{
pk1=pi;
head++;
data2[loc]=data2[countdata2-1];
countdata2--;
p[countp]=pk1;
countp++;
flag=1;
break;
}
}
if(flag==0)
goto step4;
}//step 3
else
{
step4:if((loc=indata2(pi-qj,data2,countdata2))>=0)
{
int flag1=0;
for(i=0;i<countdata2;i++)
{
if(data2>pi-pk)
{
qj1=pi;
int loc1=indata2(pi,data1,mid);
//if(loc1>=head)
if(pi>=data1[head])
head++;
data2[loc]=data2[countdata2-1];
countdata2--;
q[countq]=qj1;
countq++;
flag1=1;
break;
}
}
if(flag1==0) goto step5;
}//step 4
else
{
step5:if(pk>qj)
{
pi=pk;
// loc=indata2(pk,p,countp);
p[loc]=p[countp-1];
countp--;
pk=max(p, countp);
head--;
goto step4;
}
if(pk<qj)
{
pi=pk;
//data1[mid]=qj;
//mid++;
//sort(data1+head,data1+mid,cmp);
head--;
data2[countdata2]=qj1-qj;
countdata2++;
data2[countdata2]=pk1-pk;
countdata2++;
//int locqj=indata2(qj,q,countq);
//int locpk=indata2(pk,p,countp);
//q[locqj]=q[countq-1];
countq--;
qj=max(q, countq);
//p[locpk]=p[countp-1];
countp--;
pk=max(p, countp);
head--;
goto step4;
}
}
}
// head++;
}
for(i=0;i<countp;i++)
printf("%d->",p);
for(i=countq-1;i>=0;i--)
printf("%d->",len-q);
}
void main()
{
init();
spdp();
int x=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -