| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
c提交超时的试试用GCC,蔽人就这样过了,疑惑中...#include <stdio.h> short int l[5001][5001]; char s[5001]; int love(int i, int j)//自上而下的动态规划(备忘录法) { if(l[i][j]!=5555) return l[i][j]; if(j<=i) { l[i][j]=0; return 0; } if(s[i]==s[j]) { l[i][j]=love(i+1,j-1); return l[i][j]; } else { l[i][j]=love(i+1,j); if(love(i,j-1)<l[i][j]) l[i][j]=l[i][j-1]; l[i][j]++; return l[i][j]; } } int main() { int n,i,j; scanf("%d%s",&n,s); for(i=0;i<n;i++) for(j=0;j<n;j++) l[i][j]=5555; printf("%d",love(0,n-1)); } /*刻画最优子结构的解为:设l[i,j]为s[i..j]之间最少需插入的字符个数。 { 0 i=j; l[i,j]= l[i+1,j-1] s[i]=s[j]&&j>=i; min(s[i+1,j],s[i,j-1])+1 s[i]!=s[j]&&j>=i; }*/ Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator