#两个WA剩下三个一直在评测,求教大佬。。。
  • 板块P1464 Function
  • 楼主道爷2000
  • 当前回复14
  • 已保存回复14
  • 发布时间2020/5/19 12:23
  • 上次更新2023/11/7 02:10:51
查看原帖
#两个WA剩下三个一直在评测,求教大佬。。。
331662
道爷2000楼主2020/5/19 12:23

在题解区看到一个思路,做了一些修改,但是一直过不去。

附上代码

#include<stdio.h>
long long int a[10001][3]  //这是存输入的数据的数组;
long long int dp[25][25][25]  //用于记忆搜索的数组;
long long int w(long long int a,long long int b,long long int c)
{
	if(a<=0||b<=0||c<=0)
	{
		return 1;
	}
	else if(a>20||b>20||c>20)
	{
		if(dp[20][20][20]!=0)
		{
			return dp[20][20][20];
		}
		else
		{
			w(20,20,20);
			return dp[20][20][20];
		}
	}  //在判断没有出现负数以后,再判断是否有大于20的数据,如果有,再判断dp[20][20][20]是否为零,如果不是零,则直接返回dp[20][20][20]的值,否则对20,20,20进行一次函数调用再返回该值
	else if(dp[a][b][c]!=0)
	{
		return dp[a][b][c];
	}
	else if(a<b&&b<c)
	{
		dp[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
		return dp[a][b][c];
	}
	else
	{
		dp[a][b][c]=w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
		return dp[a][b][c];
	}
	
};
int main()
{
	int i=0,j,n=1,p,q,r;
	for(p=0;p<25;p++)
	{
		for(q=0;q<25;q++)
		{
			for(r=0;r<25;r++)
			{
				dp[p][q][r]=0;
			}
		}
	}
	while(n>0)
	{
		i++;
		scanf("%lld%lld%lld",&a[i][0],&a[i][1],&a[i][2]);
		if(a[i][0]==-1&&a[i][1]==-1&&a[i][2]==-1)
		{
			n=-1;
		}
	}
	for(j=1;j<i;j++)
	{
		printf("w(%lld,%lld,%lld)=%lld\n",a[j][0],a[j][1],a[j][2],w(a[j][0],a[j][1],a[j][2]));		
	}
}

输入的各项数据在dev里面都是对的,但是oj时会出现两个wa和三个一直judge,求教各位大神。。。。

2020/5/19 12:23
加载中...