| ||||||||||
| 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 | |||||||||
晕,回玩才发现这么老的帖了!In Reply To:我穷举d-c,然后用O(n)的算法可以算出d-c==a+b?但程序出现一个好搞笑的问题,哪位大哥帮我看看 Posted by:zerocool_08 at 2005-10-12 22:04:31 > #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