求解(求轻喷)
查看原帖
求解(求轻喷)
433901
cj1580466785楼主2021/3/6 11:40
#include<stdio.h>
int L,n,m[100],z[100],i,cun,o,min,max,Min,x,v;
int suan(int t)
{
	t=0;
	for(i=1;i<=n;i++)
	{
		t=m[i]==0||m[i]==L+1?t:t+1;
	}
	if(t==0)
	{
		return 0; 
	}
	else
	{
		for(i=1;i<=n;i++)
		{
			if(m[i]==0||m[i]==L+1)
			{
				m[i]=m[i];
			}
			else
			{
				m[i]=m[i]+z[i];
				for(o=1;o<=n;o++)
				{
					if(m[i]==m[o])
					{
						cun=z[i];
						z[i]=z[o];
						z[o]=cun;
					}
				}
			}
		}
		max++;
		suan(t);
	}
}
int main()
{	
int u;
	scanf("%d %d",&L,&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&m[i]);
	}
	v=L%2==0?L/2:(L-1)/2+1; 
	for(i=1,min=L;i<=n;i++)
	{
		x=m[i]>v?m[i]-v:v-m[i];
		min=min>x?x:min;
	}
	Min=v;
	max=0;
	for(i=1;i<=n;i++)
	{
		z[i]=m[i]>v?-1:1;
	}
	u=0;
	suan(u);
	printf("%d %d",Min,max);
	return 0;
} 

我想模拟全过程并记录,但不知道怎么错了,求指点(时间复杂度方面,这已经是我尽力的了。)

2021/3/6 11:40
加载中...