60分求调,必关
  • 板块P1464 Function
  • 楼主Songshuai
  • 当前回复2
  • 已保存回复2
  • 发布时间2025/7/26 11:56
  • 上次更新2025/7/26 17:55:53
查看原帖
60分求调,必关
1748379
Songshuai楼主2025/7/26 11:56
#include<bits/stdc++.h>
using namespace std;
long long a,b,c;
long long s[25][25][25];
int w(long long a,long long b,long long c){
	if(a<=0||b<=0||c<=0){
		return 1;
	} 
	else if(a>20||b>20||c>20){
		return w(20,20,20);
	}
	else if(a<b&&b<c){
		if(s[a][b][c-1]!=0&&s[a][b-1][c-1]!=0&&s[a][b-1][c]!=0){
			return s[a][b][c-1]+s[a][b-1][c-1]-s[a][b-1][c];
		}
		else {
			int x;
			if(s[a][b][c-1]==0){
				s[a][b][c-1]=w(a,b,c-1);
			}
			if(s[a][b-1][c-1]==0){
				s[a][b-1][c-1]=w(a,b-1,c-1);
			}
			if(s[a][b-1][c]==0){
				s[a][b-1][c]=w(a,b-1,c);
			}
			x=s[a][b][c-1]+s[a][b-1][c-1]-s[a][b-1][c];
			return x; 
		}
	}
	else {
		if(s[a-1][b][c]!=0&&s[a-1][b-1][c]!=0&&s[a-1][b][c-1]!=0&&s[a-1][b-1][c-1]!=0){
			return s[a-1][b][c]+s[a-1][b-1][c]+s[a-1][b][c-1]-s[a-1][b-1][c-1];
		}
		else {
			int x;
			if(s[a-1][b][c]==0){
				s[a-1][b][c]=w(a-1,b,c);
			}
			if(s[a-1][b-1][c]==0){
				s[a-1][b-1][c]=w(a-1,b-1,c);
			}
			if(s[a-1][b][c-1]==0){	
				s[a-1][b][c-1]=w(a-1,b,c-1);
			}
			if(s[a-1][b-1][c-1]==0){
				s[a-1][b-1][c-1]=w(a-1,b-1,c-1);
			}
			x=s[a-1][b][c]+s[a-1][b-1][c]+s[a-1][b][c-1]-s[a-1][b-1][c-1];
			return x; 
		}
	}
}
int main(){
//	cin>>a>>b>>c; 
//	cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;
	while(a!=-1&&b!=-1&&c!=-1){
		cin>>a>>b>>c;
		if(a==-1&&b==-1&&c==-1)break;
		cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;
	}
	return 0;
}
2025/7/26 11:56
加载中...