| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4966 人关注过本帖, 1 人收藏
标题:出个水题,看有多少能做出来的。
只看楼主 加入收藏
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
又晕了··
算法
运算量
=n!/(m!*(n-m)!)
=n*(n-1)(n-2)....(n-m+1)/m!
=循环次数/for语句中重复的次数
=(n/m)*((n-1)/(m-1))*```````(n-m+1)/1
楼主的意图是通过单个数先相除获得个比较小数在相乘
从而处理大数是吗·?

[ 本帖最后由 jiangwu10057 于 2010-1-30 18:07 编辑 ]
2010-01-30 16:24
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
看来你还是没办法证明的你式子。。。

你没变法证明,估计你也找不到你这个处理溢出的方法。
2010-01-30 16:34
jimmywood
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:109
注 册:2009-8-10
收藏
得分:0 
其实就是 n个数中找出不重复的 m个数

按排列组合的公式直接就有 C(m, n) = n!/(m! *(n - m)!)


不过这种证明方法估计会处理溢出没啥指导效果



惭愧 一开始没往这方面想 总以为不能以一个式子来表达 所以就去模拟了那个循环的过程

[ 本帖最后由 jimmywood 于 2010-1-30 16:41 编辑 ]
2010-01-30 16:38
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
哦这样啊·呵呵还要想想·
2010-01-30 16:40
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
楼主能不能给解释一下?我搜了一下,这题是百度贴吧上 2008 年的老帖子.
2010-01-30 16:58
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
呵,也不知道这道题在哪个 OJ 上,另外也不知道 LZ 有没有测试数据,总之下面的代码的结果是 LZ 给出的例子当中完全吻合的.

程序代码:
#include <stdio.h>
#define N 1007

int fun(int ,int ,int ,int);

int main(void)
{
    int  t,m,n;

    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&m,&n);
        printf("%d\n",fun(m,n,1,0));
    }

    return 0;
}

int fun(int m,int n,int i,int sum)
{
    int j;

    if(m==1)
    {
        return n;
    }
    else
    {
        for(j=i;j<=n;++j)
        {
            ++sum;
        }
         return fun(m-1,n,i+1,sum%N);
    }
}

2010-01-30 17:19
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用广陵绝唱在2010-1-30 16:58:32的发言:

楼主能不能给解释一下?我搜了一下,这题是百度贴吧上 2008 年的老帖子.



广陵,你的算法要提高了。

我从用wxjeacen号的时候你就做版主。

到了现在,code的能力并没有想像的有很大的提高。

说句实话,我其实挺佩服你的中庸风格的,从不得罪人。

可是技术跟做人是两回事。
收到的鲜花
  • 广陵绝唱2010-01-30 17:32 送鲜花  49朵   附言:谢谢,期待看到你最后的解题 code
2010-01-30 17:20
jimmywood
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:109
注 册:2009-8-10
收藏
得分:0 
我能想到的只是仿照人求C(n,m)的方式去约分 化成若干个整数相乘的形式

这样处理溢出就容易了

[ 本帖最后由 jimmywood 于 2010-1-30 17:31 编辑 ]
2010-01-30 17:25
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
我还是先想清楚为什么是哪个算法好了毕竟程序=算法+数据结构
2010-01-30 17:46
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用广陵绝唱在2010-1-30 17:19:35的发言:

呵,也不知道这道题在哪个 OJ 上,另外也不知道 LZ 有没有测试数据,总之下面的代码的结果是 LZ 给出的例子当中完全吻合的.


#include <stdio.h>
#define N 1007

int fun(int ,int ,int ,int);

int main(void)
{
    ...



我测试了下,你的递归效率真的很低。

2
1 2
2 5

2
5

2 5的结果,显然不是5,应该是10....
2010-01-30 17:53
快速回复:出个水题,看有多少能做出来的。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025760 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved