[[TableOfContents]] = ì˜¤ëŠ˜ì˜ ë¬¸ì œ = * [https://www.acmicpc.net/problem/1648|그림 êµí™˜] = ì°¸ê°€ìž = * 15ì´ì›ì¤€ = 코드 = == 15ì´ì›ì¤€ == {{{ #include<iostream> #include<algorithm> using namespace std; int arr[15][15] = {0,}; int dp[15][10][1<<15] = {0,}; int N; int dfs(int num,int val, int visited){ if(dp[num][val][visited]){ if(dp[num][val][visited] == -1){ return 0; } return dp[num][val][visited]; } int maxn = 0; for(int i = 0; i<N; i++){ if(!(visited & (1<<i)) && arr[num][i] >= val){ maxn = max(maxn, dfs(i, arr[num][i], visited + (1<<i)) + 1); } } dp[num][val][visited] = maxn; if(dp[num][val][visited] == 0){ dp[num][val][visited] = -1; return 0; } return dp[num][val][visited]; } int main(){ cin>>N; for(int i = 0; i<N; i++){ for(int j = 0; j<N; j++){ scanf("%1d", &arr[i][j]); } } cout<<dfs(0,0,1) + 1<<endl; } }}} == ë°•ì¸ì„œ == == ê³½ì •í == = ì•„ì´ë””ì–´ = == 15ì´ì›ì¤€ == *dfs로 ìµœëŒ€ê°’ì„ ì°¾ê³ ë„ì¤‘ì— ê²¹ì¹˜ëŠ” ê²ƒì€ dp를 ì´ìš©í–ˆìŠµë‹ˆë‹¤. == ë°•ì¸ì„œ == == ê³½ì •í ==