DP WA一个点求助(第三个点
查看原帖
DP WA一个点求助(第三个点
596201
Misaka_Mikoto_1楼主2023/4/2 10:17

用的两个dp数组

#include<iostream>
using namespace std;
typedef long long LL;
LL N,arr[11][11],dp1[11][11],dp2[11][11];
int main(){
    cin>>N;
    LL a,b,c;
    while(cin>>a>>b>>c)
    {
        if(!a&&!b&&!c)break;
        arr[a][b]=c;
        dp1[a][b]=c;
        dp2[a][b]=c;
    }
    for(LL i=1;i<=N;i++)
    {
        for(LL j=1;j<=N;j++)
        {
            dp1[i][j]=max(dp1[i-1][j],dp1[i][j-1])+dp1[i][j];
        }
    }
    LL z1,z2;
    z1=dp1[N][N];
    LL x=N,y=N;
    dp2[N][N]=0;
    dp2[1][1]=0;
    while(x>1||y>1)
    {
    	if(dp1[x][y]-arr[x][y]==dp1[x][y-1])
    	{
    		dp2[x][y-1]=0;
    		y-=1;
		}
		else{
			dp2[x-1][y]=0;
    		x-=1;
		}
	}
	for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            dp2[i][j]=max(dp2[i-1][j],dp2[i][j-1])+dp2[i][j];
        }
    }
    z2=dp2[N][N];
    cout<<z1+z2<<endl;
    return 0;
}
2023/4/2 10:17
加载中...