
#include <stdio.h> #include <string.h> #define MAX_N 1000 #define MAX_M 1000 char s[MAX_N], t[MAX_M]; int dp[MAX_N+1][MAX_M+1]={0,}; int max(int left, int right){ if(left>right) return left; else return right; } int main(int argc, char *argv[]){ int n,m; strcpy(s+1,"abcd"); strcpy(t+1,"becd"); n=strlen(s+1); m=strlen(t+1); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(s[i+1]==t[j+1]){ dp[i+1][j+1]=dp[i][j]+1; }else{ dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]); } } } printf("%d\n",dp[n][m]); printf("\nDP 테이블\n"); for(int i=0;i<n+1;i++){ for(int j=0;j<m+1;j++){ printf("%d ",dp[i][j]); } printf("\n"); } return 0; }
이것이 뭐하는 프로그램일랑교??