RE求调
  • 板块P1464 Function
  • 楼主AETHER2010
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/31 22:35
  • 上次更新2024/8/31 22:36:55
查看原帖
RE求调
1331366
AETHER2010楼主2024/8/31 22:35

代码如下,看了下题解试着用记忆化RE了

#include <iostream>
using namespace std;
int q[25][25][25]={-1};
long long w(long long a,long long b,long long c){
	if(a<=0 || b<=0 || c<=0){
		return 1;
	}
	if(q[a][b][c]!=-1){
		return q[a][b][c];
	}
	if(a>20 || b>20 || c<20){
		return w(20,20,20);
	}
	else if(a<b && b<c){
		if(q[a][b][c-1]==-1){
			q[a][b][c-1]=w(a,b,c-1);
		}
		if(q[a][b-1][c-1]==-1){
			q[a][b-1][c-1]=w(a,b-1,c-1);
		}
		if(q[a][b-1][c]==-1){
			q[a][b-1][c]=w(a,b-1,c);
		}
		q[a][b][c] = q[a][b][c-1]+q[a][b-1][c-1]-q[a][b-1][c];
	}
	else{
		if(q[a-1][b][c]==-1){
			q[a-1][b][c]=w(a-1,b,c);
		}
		if(q[a-1][b-1][c]==-1){
			q[a-1][b-1][c]=w(a-1,b-1,c);
		}
		if(q[a-1][b][c-1]==-1){
			q[a-1][b][c-1]=w(a-1,b,c-1);
		}
		if(q[a-1][b-1][c-1]==-1){
			q[a-1][b-1][c-1]=w(a-1,b-1,c-1);
		}
		q[a][b][c] = q[a-1][b][c]+q[a-1][b-1][c]+q[a-1][b-1][c]-q[a-1][b-1][c-1];
	}
}
int main(){
	long long a,b,c;
	int ans;
	while(1){
		cin>>a>>b>>c;
		if(a==-1 && b==-1 && c==-1){
			return 0;
		}
		ans=w(a,b,c);
		cout<<"w("<<a<<","<<b<<","<<c<<") = "<<ans;
	}
	return 0;
}
2024/8/31 22:35
加载中...