40分WA求调
查看原帖
40分WA求调
1143775
__yiLIUyi__楼主2025/2/6 15:55
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,c,ans[25][25][25];
ll w(ll x,ll y,ll z){
	if(x<1 or y<1 or z<0) return 1;
	if(x>20 or y>20 or z>20) return w(20,20,20);	
	if(x<y and y<z){
		if(ans[x][y][z-1]==0) ans[x][y][z-1]=w(x,y,z-1);
		if(ans[x][y-1][z-1]==0) ans[x][y-1][z-1]=w(x,y-1,z-1);
		if(ans[x][y-1][z]==0) ans[x][y-1][z]=w(x,y-1,z);
		ans[x][y][z]=ans[x][y][z-1]+ans[x][y-1][z-1]-ans[x][y-1][z];
	}else{
		if(ans[x-1][y][z]==0) ans[x-1][y][z]=w(x-1,y,z);
		if(ans[x-1][y-1][z]==0) ans[x-1][y-1][z]=w(x-1,y-1,z);
		if(ans[x-1][y][z-1]==0) ans[x-1][y][z-1]=w(x-1,y,z-1);
		if(ans[x-1][y-1][z-1]==0) ans[x-1][y-1][z-1]=w(x-1,y-1,z-1);
		ans[x][y][z]=ans[x-1][y][z-1]+ans[x-1][y-1][z]+ans[x-1][y][z]-ans[x-1][y-1][z-1];
	}return ans[x][y][z];
}
ll read(){
	char ch=getchar();
	ll s=0,w=1;
	while(ch<'0' or ch>'9'){
		if(ch=='-')w=-1;
		ch=getchar();
	}while(ch>='0' and ch<='9'){
		s=s*10+ch-'0';
		ch=getchar();
	}return s*w;
}
int main(){
	while(1){
		a=read(),b=read(),c=read();
		if(a==-1 and b==-1 and c==-1) return 0;
		cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl;
	}return 0;
}
2025/2/6 15:55
加载中...