“常用公式”在线计算,“设计手册”在线查询
要用recursion做,不能出现loop大意是这样一个数组a1 = 10 50 40 20 50 40 30统计另一个数组a2是否包含在a1中,a2在a1中可以不连续比如另一个数组a2 =10 20 40 则只有一种包含方式, 返回1a2=50 40 30 则有3种包含方式 返回3header是int countIncludes(const double a1[], int n1, const double a2[], int n2)我的想法是算出a2中每个数在a1中出现的次数c,然后c1*c2*c3...就能得出结果,可是由于a2的样子也不清楚,我就迷茫了...求各位帮忙...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 1 个关于本帖的回复 最后回复于 2013-8-16 10:14

沙发
王培培 新来的 发表于 2013-8-16 10:14:18 | 只看该作者
研发埠培训中心
典型的DP問題,我把參數改成了int,思路是是一樣的。floatingpoint是不能用等號來比較是否相等的,有numericalprecision 的問題。int countIncludes( int a[], int n, int b[], intm){     if(m==0) return 1;//   或者 if(m<=0),防止非法長度     if(n==0) return 0;//   或者 if(n<=0)       //也可以加上if(m>n) return 0; 不加的話用下面的recursion也能得到正確答案    if(a[0]==b[0] )          returncountIncludes(a+1,n-1,b+1,m-1)+countIncludes(a+1,n-1,b,m);     else          returncountIncludes(a+1,n-1,b,m);}Time: O(nm)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台