Description
Input
Output
Sample Input
1 1 1 2 2 2 10 4 6 50 50 50 -1 7 18 -1 -1 -1
Sample Output
w(1, 1, 1) = 2 w(2, 2, 2) = 4 w(10, 4, 6) = 523 w(50, 50, 50) = 1048576 w(-1, 7, 18) = 1
#include <iostream> using namespace std; long long a,b,c,d; int dp[21][21][21]; int w(int i,int j,int k) { if(i <= 0 || j <= 0 || k <= 0) return 1; return dp[i][j][k]; } void W() { int i,j,k; for(i = 1; i < 21; i++) for(j = 1; j < 21; j++) for(k = 1; k < 21; k++) { if(i < j && j < k) dp[i][j][k] = w(i,j,k-1) + w(i,j-1,k-1) - w(i,j-1,k); else dp[i][j][k] = w(i-1,j,k) + w(i-1,j-1,k) + w(i-1,j,k-1) - w(i-1,j-1,k-1); } } int Ww(int i,int j,int k) { if(i <= 0 || j <= 0 || k <= 0) return 1; if(i > 20 || j > 20 || k > 20) return dp[20][20][20]; else return dp[i][j][k]; } int main() { W(); while(cin>>a>>b>>c) { if(a==-1&&b==-1&&c==-1) break; else d=Ww(a,b,c); cout<<"w("<<a<<", "<<b<<", "<<c<<") "<<"= "<<d<<endl; } return 0; }