#include <stdio.h> int dy(int *s,int *f,int,int); int m[13][13]={0}; void main() { int s[]={0,1,3,0,5,3,5,6,8,8,2,12/*,*/,15}; int f[]={0,4,5,6,7,8,9,10,11,12,13,14/**/,15}; printf("%d/n",dy(s,f,0,12)); } int dy(int *s,int*f,int left,int right) { int k=0; for(k=left+1;k<right;k++) { if(s[k]>f[left] && f[k]<=s[right]) { if(m[left][right]) continue; int q=dy(s,f,left,k)+dy(s,f,k,right)+1; if(q>m[left][right]) m[left][right]=q; } } return m[left][right]; }