关于代码的写法问题
查看原帖
关于代码的写法问题
1005781
blsya23a2楼主2024/5/28 23:00

第一版写了几个小时,一直WA

a,b,c,d=map(int,input().split())
e,f,g,h,aa=list(map(int,input().split())),list(map(int,input().split())),list(map(int,input().split())),list(map(int,input().split())),0
i,j,k,l=sum(e)//2,sum(f)//2,sum(g)//2,sum(h)//2
m,n,o,p=[[0 for q in range(a)] for r in range(i)],[[0 for s in range(b)] for t in range(j)],[[0 for u in range(c)] for v in range(k)],[[0 for w in range(d)] for x in range(l)]
if a==1:
    aa+=e[0]
else:
    for y in range(i):
        for z in range(a):
            if z==0:
                if e[z]<=y+1:
                    m[y][z]=e[z]
            elif e[z]<=y:
                m[y][z]=max(m[y][z-1],m[y-e[z]][z-1]+e[z])
            elif e[z]==y+1:
                m[y][z]=y+1
            else:
                m[y][z]=m[y][z-1]
    aa+=max(m[i-1][a-1],sum(e)-m[i-1][a-1])
if b==1:
    aa+=f[0]
else:
    for ab in range(j):
        for ac in range(b):
            if ac==0:
                if f[ac]<=ab+1:
                    n[ab][ac]=f[ac]
            elif f[ac]<=ab:
                n[ab][ac]=max(n[ab][ac-1],n[ab-f[ac]][ac-1]+f[ac])
            elif f[ac]==ab+1:
                n[ab][ac]=ab+1
            else:
                n[ab][ac]=n[ab][ac-1]
    aa+=max(n[j-1][b-1],sum(f)-n[j-1][b-1])
if c==1:
    aa+=g[0]
else:
    for ad in range(k):
        for ae in range(c):
            if ae==0:
                if g[ae]<=ad+1:
                    o[ad][ae]=f[ae]
            elif g[ae]<=ad:
                o[ad][ae]=max(o[ad][ae-1],o[ad-g[ae]][ae-1]+g[ae])
            elif g[ae]==ad+1:
                o[ad][ae]=ad+1
            else:
                o[ad][ae]=o[ad][ae-1]
    aa+=max(o[k-1][c-1],sum(g)-o[k-1][c-1])
if d==1:
    aa+=h[0]
else:
    for af in range(l):
        for ag in range(d):
            if ag==0:
                if h[ag]<=af+1:
                    p[af][ag]=f[ag]
            elif h[ag]<=af:
                p[af][ag]=max(p[af][ag-1],p[af-h[ag]][ag-1]+h[ag])
            elif h[ag]==af+1:
                p[af][ag]=af+1
            else:
                p[af][ag]=p[af][ag-1]
    aa+=max(p[l-1][d-1],sum(h)-p[l-1][d-1])
print(aa)

受不了了,被迫重新写起,十多分钟一次 AC 了

a,b,c,d=map(int,input().split())
e,f=list(map(int,input().split())),0
g=sum(e)//2
h=[[0 for i in range(a)] for j in range(g)]
if a==1:
    f+=e[0]
else:
    for k in range(g):
        for l in range(a):
            if l==0:
                if e[l]<=k+1:
                    h[k][l]=e[l]
            elif e[l]<=k:
                h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
            elif e[l]==k+1:
                h[k][l]=k+1
            else:
                h[k][l]=h[k][l-1]
    f+=max(h[g-1][a-1],sum(e)-h[g-1][a-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(b)] for j in range(g)]
if b==1:
    f+=e[0]
else:
    for k in range(g):
        for l in range(b):
            if l==0:
                if e[l]<=k+1:
                    h[k][l]=e[l]
            elif e[l]<=k:
                h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
            elif e[l]==k+1:
                h[k][l]=k+1
            else:
                h[k][l]=h[k][l-1]
    f+=max(h[g-1][b-1],sum(e)-h[g-1][b-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(c)] for j in range(g)]
if c==1:
    f+=e[0]
else:
    for k in range(g):
        for l in range(c):
            if l==0:
                if e[l]<=k+1:
                    h[k][l]=e[l]
            elif e[l]<=k:
                h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
            elif e[l]==k+1:
                h[k][l]=k+1
            else:
                h[k][l]=h[k][l-1]
    f+=max(h[g-1][c-1],sum(e)-h[g-1][c-1])
e=list(map(int,input().split()))
g=sum(e)//2
h=[[0 for i in range(d)] for j in range(g)]
if d==1:
    f+=e[0]
else:
    for k in range(g):
        for l in range(d):
            if l==0:
                if e[l]<=k+1:
                    h[k][l]=e[l]
            elif e[l]<=k:
                h[k][l]=max(h[k][l-1],h[k-e[l]][l-1]+e[l])
            elif e[l]==k+1:
                h[k][l]=k+1
            else:
                h[k][l]=h[k][l-1]
    f+=max(h[g-1][d-1],sum(e)-h[g-1][d-1])
print(f)

一个惨痛的教训

2024/5/28 23:00
加载中...