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 |
不能忍了,总WA贴代码上来,大家帮查一下好么?thxIn Reply To:2101是不是走两个对角线,用DP做呢?还要注意什么? Posted by:seol at 2004-11-25 13:22:47 #include <stdio.h> #include <math.h> double a[1010][1010]; int x[1000],y[1000]; int main() { int n,e,nn,ee,i,j,temp; double re1,re2,re3,max,mmax; for (i=0;i<1010;i++) for (j=0;j<1010;j++) a[i][j]=0.0; scanf("%d%d",&n,&e); for (nn=0;nn<n-1;nn++) scanf("%d",&x[nn]); for (ee=0;ee<e-1;ee++) scanf("%d",&y[ee]); for (nn=n-1;nn>=0;nn--) for (ee=e-1;ee>=0;ee--) { if (nn==n-1) if (ee==e-1) continue; if (nn!=n-1) if (ee!=e-1) { re1=a[nn+1][ee+1]+sqrt(x[nn]*x[nn]+y[nn]*y[nn]); re2=a[nn+1][ee]+y[nn]; re3=a[nn][ee+1]+x[nn]; max=re1; if (re2<max) max=re2; if (re3<max) max=re3; a[nn][ee]=max; } if (nn!=n-1) if (ee==e-1) a[nn][ee]=y[nn]+a[nn+1][ee]; if (nn==n-1) if (ee!=e-1) a[nn][ee]=x[ee]+a[nn][ee+1]; } mmax=a[0][0]; for (ee=0;ee<=e/2-1;ee++) {temp=y[ee];y[ee]=y[e-2-ee];y[e-2-ee]=temp;} for (nn=n-1;nn>=0;nn--) for (ee=e-1;ee>=0;ee--) { if (nn==n-1) if (ee==e-1) continue; if (nn!=n-1) if (ee!=e-1) { re1=a[nn+1][ee+1]+sqrt(x[nn]*x[nn]+y[nn]*y[nn]); re2=a[nn+1][ee]+y[nn]; re3=a[nn][ee+1]+x[nn]; max=re1; if (re2<max) max=re2; if (re3<max) max=re3; a[nn][ee]=max; } if (nn!=n-1) if (ee==e-1) a[nn][ee]=y[nn]+a[nn+1][ee]; if (nn==n-1) if (ee!=e-1) a[nn][ee]=x[ee]+a[nn][ee+1]; } if (a[0][0]>mmax) mmax=a[0][0]; i=0; while (i<mmax-1e-10) i++; printf("%d\n",i); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator