输出结果和正确结果顺序不同。。。?

报错结果error C2143: syntax error : missing ';' before 'type'
把定义变量放到前面能运行
#include
#include
#include
int len[64],n,minlen,get;
int used[64];
void quickSort(int a[],int s,int m)
{
int i,j,t;
if(s i=s,j=m+1;
while(1){
while(i+1a[s]);
while(j-1>-1&&a[--j] if(i>=j)break;
t=a[i],a[i]=a[j],a[j]=t;
}
t=a[s],a[s]=a[j],a[j]=t;
quickSort(a,s,j-1);
quickSort(a,j+1,m);
}
}
int dfs(int nowlen,int nowget,int cnt)
{
int i;
int f=0;
if(cnt>=n) return 0;
if(get==nowget) return 1;
if(nowlen==0)f=1;
for(i=cnt;i<n;i++)
{
if(!used[i]){
if(len[i]+nowlen==minlen){
used[i]=1;
if(dfs(0,nowget+1,nowget)) return 1;
used[i]=0;
return 0;
}
else if(len[i]+nowlen<minlen)
{
used[i]=1;
if(dfs(nowlen+len[i],nowget,i+1))return 1;
used[i]=0;
if(f) return 0;
while(i+1<n&&len[i]==len[i+1])i++;

        }
    }
}
return 0;

}
int main()
{
int i,tollen;
while(scanf("%d",&n)!=EOF&&n!=0)
{
int j=0,p;
tollen=0;
for(i=0;i<n;i++)
{
scanf("%d",&p);
if(p<=50)
{
len[j]=p;
tollen+=len[j];
j++;
}
}
n=j;
quickSort(len,0,n-1);
for(minlen=len[0];;minlen++)
{
if(tollen%minlen)continue;
for(i=0;i<64;i++)
used[i]=0;
get=tollen/minlen;
if(dfs(0,0,0))
{
printf("%d\n",minlen);
break;
}
}
}
return 0;
}
但是结果和正确输出bu't

https://blog.csdn.net/hao134838/article/details/85456067