1 条题解

  • 0
    @ 2023-6-11 12:20:42

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    /*
    	w(a,b,c)
    	a<=0 || b<=0 || c<=0    w(a,b,c) = 1
    	a>20 || b>20 || c>20    w(a,b,c)= w(20,20,20);
    	w(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-l)
    */ 
    int s[101][101][101];
    
    int w(int a,int b,int c){
    	if(a<=0 || b<=0 || c<=0){
    		s[0][0][0] = 1;
    		return 1;
    	}
    	else if(a>20 || b>20 || c>20){
    		if(s[20][20][20]==0) s[20][20][20] = w(20,20,20);
    		return s[20][20][20];
    	}
    	else {
    		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);
    		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];
    	}
    }
    
    int main(){
    	int a,b,c;
    	cin>>a>>b>>c;
    	cout<<w(a,b,c);
    	return 0;
    }
    
    
    • 1

    信息

    ID
    2583
    时间
    1000ms
    内存
    16MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者