WA了求助
查看原帖
WA了求助
219814
xiezihan楼主2020/7/23 19:22
#include<bits/stdc++.h>
using namespace std;
int dp[45][45][45][45];
int a[100][100];
bool vis[25];
int cur[4];
int dfs(int cnt)
{
	int Max=0;
	if(dp[cur[0]][cur[1]][cur[2]][cur[3]]!=-1)
	{
		return dp[cur[0]][cur[1]][cur[2]][cur[3]];
	} 
	if(cnt==5)
	{
		return dp[cur[0]][cur[1]][cur[2]][cur[3]]=0;
	}
	for(int i=0;i<4;i++)
	{
		if(cur[i]==0)
		{
			continue;
		}
		int c=a[i][cur[i]];
		cur[i]--;
		if(vis[c]==false)
		{
			vis[c]=true;
			Max=max(Max,dfs(cnt+1));
			vis[c]=false;
		}
		else
		{
			vis[c]=false;
			Max=max(Max,dfs(cnt-1)+1);
			vis[c]=true;
		}
		cur[i]++;
	}
	return dp[cur[0]][cur[1]][cur[2]][cur[3]]=Max;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		if(n==0)
		{
			return 0;
		}
		memset(dp,-1,sizeof(dp));
		memset(vis,false,sizeof(vis));
		cur[0]=n;
		cur[1]=n;
		cur[2]=n;
		cur[3]=n;
		for(int i=0;i<4;i++)
		{
			for(int j=0;j<n;j++)
			{
				scanf("%d",&a[i][j]);
			}
		}
		printf("%d\n",dfs(0));
		
	}
    return 0;
}

样例过了,但WA了qwq

提交记录

2020/7/23 19:22
加载中...