NOTE/BAEKJOON
9184 신나는함수실행
m-inz
2022. 3. 16. 23:08
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class main {
static int[][][] dp;
static StringTokenizer st;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true) {
dp= new int[21][21][21];
st = new StringTokenizer(br.readLine()," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
if(a==-1 && b==-1 && c==-1) break;
bw.write("w("+a+", "+b+", "+c+") = "+w(a,b,c)+"\n");
}
bw.flush();
bw.close();
}
static int w(int a, int b, int c) {
if(a<=0 || b <=0 || c<=0) return 1;
if(a>20 || b>20 || c>20) return w(20,20,20);
if(dp[a][b][c]!=0) return dp[a][b][c];
if(a<b && b<c) return dp[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
return dp[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-1);
}
}
타일링 문제랑 비슷한 늒힘