| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我穷举d-c,然后用O(n)的算法可以算出d-c==a+b?但程序出现一个好搞笑的问题,哪位大哥帮我看看#include "stdio.h"
#include "stdlib.h"
int cmp(const void *p1,const void *p2)
{
return *(int *)p1-*(int *)p2;
}
int main(void)
{
int n,i,j,k,m,flag,a[1010],s,t=0,b[10]={0};
while(scanf("%d",&n)==1&&n)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
flag=0;
qsort(a,n,sizeof(int),cmp);
for(i=n-1;!flag&&i>=0;i--)
for(j=n-1;!flag&&j!=i&&j>=0;j--) //从n-1递减就WA,把j从0递增的话就AC了,T T
for(m=0,k=n-1;m<k;){
if(m==i||m==j)
m++;
if(k==i||k==j)
k--;
if(m<k)
{
if(a[i]-a[j]==a[m]+a[k])
{ flag=1,s=a[i];b[t++]=s;break;}
else
if(a[i]-a[j]<a[m]+a[k])
k--;
else
m++;
}
}
if(flag)
printf("%d\n",s);
else
printf("no solution\n");
}
printf("\n\n%d %d %d %d %d\n",b[0],b[1],b[2],b[3],b[4]);
scanf("%d",&n);
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator