| 
 | 
 
 
发表于 2021-12-13 12:16:08
|
显示全部楼层
 
 
 
 本帖最后由 jhq999 于 2021-12-13 12:57 编辑  
- int main()
 
 - {
 
 - int m=0,n=0,i=0,j=0,begin=0,end=0,min=0,tmp=0;
 
 - scanf("%d%d",&m,&n);
 
 - if(m<n)tmp=m,m=n,n=tmp;
 
 - int *am=new int[m],*an=new int[n+1];
 
 - i=0;
 
 - while(i<m)scanf("%d",&am[i++]);
 
 - i=0;
 
 - while(i<n)scanf("%d",&an[i++]);
 
 - min=n;
 
 - for(i=0;i<m-n;i++)
 
 - {
 
 -     
 
 -     for(j=0;j<n&&j+i<m;j++);
 
 -     {
 
 -        if(am[j+i]+an[j]>3)break;
 
 -      }
 
 -         
 
 -      if(j==n)
 
 -      {
 
 -           begin=-1;
 
 -           for(j=0;(j<n)&&(j+i<m);j++)
 
 -           {
 
 -                if(-1==begin)
 
 -                            {
 
 -                                   if(am[j+i]+an[j]==3)begin=j;
 
 -                            }
 
 -                else if(am[j+i]+an[j]<3||j==(n-1))
 
 -                {
 
 -                   end=(j==(n-1))?(j+1):j;
 
 -                   if(end-begin==1)break;
 
 -                   if(end-begin<min)min=end-begin,begin=-1,end=m+n;
 
 -                 }
 
 -            }
 
 -      }
 
 -      if(end-begin==1)
 
 -      {
 
 -           min=1;
 
 -           break;
 
 -       }
 
 - }
 
 - //输出min
 
 - delete[] am;
 
 - delete[] an;
 
 - return 0;
 
 - } 
 
  复制代码 |   
 
 
 
 |