| ||||||||||
| 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