| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4966 人关注过本帖, 1 人收藏
标题:出个水题,看有多少能做出来的。
只看楼主 加入收藏
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用卧龙孔明在2010-1-31 18:52:56的发言:

用上面的程序输出了个小表,然后规律就出来了

#include<stdio.h>
#include<string.h>
#define M 2001
int ans[M][M];
int main(void)
{
    int i, j;
    int T, m, n;
    for(i=1; i<M; i++) ans[1] = i;
    fo ...



这才是我想要看到的代码。
2010-01-31 19:05
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
Lz给组数据,帮忙测试一下我的代码。

without further ado, let’s get started
2010-01-31 20:05
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
不明白
2010-01-31 20:09
jimmywood
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:30
专家分:109
注 册:2009-8-10
收藏
得分:0 
受教了 复习了很多排列组合二项式方面的知识
做到这份上这题感觉更像是数学题了

楼上的
C(m,n) = C(m-1, n-1) + C(m-1, n)
这式子的证明可以这样理解
从m个数中选n个数
m个数中有一个特定的数为x, 另外有m-1个数
分两种情况
n个数中有x 取法为 C(m-1, n-1)
n个数中无x 取法为 C(m-1, n)

这样就可以只用加法通过递推求出所有的C(m,n), 即杨辉三角
2010-02-01 10:36
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
就是n*(n-1)*(n-2)*(n-3)........*(n-m)
应该就是这个意思

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2010-02-01 17:33
鬼脑
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-2-2
收藏
得分:0 
#include<stdio.h>
#define MAX 10000
void main(void)
{
     long c[MAX];
     int a[MAX],b[MAX];
     int k,i;
     long fun(int m,int n);

     clrscr();
     scanf("%d",&k);
     for(i=0;i<k;i++)
    scanf("%d%d",&a[i],&b[i]);

     for(i=0;i<k;i++){
    c[i]=fun(a[i],b[i]);
    printf("%d\n",c[MAX]%1007);
     }
}
long fun(int m,int n)
{
     int i;
     long op;
     op=0;
     if(m==1){
       for(i=m;i<=n;i++)op++;
       return op;
     }
     for(i=m;i<=n;i++)op++;
     return op+fun(--m,n);
}
2010-02-02 20:27
nbkxx2008
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-7
收藏
得分:0 
程序代码:
#include<stdio.h>
#define MAX 10000
void main(void)
{
     long c[MAX];
     int a[MAX],b[MAX];
     int k,i;
     long fun(int m,int n);
     scanf("%d",&k);
     for(i=0;i<k;i++)
    scanf("%d%d",&a[i],&b[i]);

     for(i=0;i<k;i++){
    c[i]=fun(a[i],b[i]);
    printf("%d\n",c[i]%1007);
     }
}
long fun(int m,int n)
{
     int i;
     long op;
     int t;
     op=0;
     t=m;
     if(m==1){
       for(i=t;i<=n;i++)op++;
       return op;
     }
     return op+fun(--m,n);
}
改正楼上的程序,这个符合楼主的测试数据。
2010-02-03 09:36
kacher
Rank: 2
等 级:论坛游民
帖 子:30
专家分:52
注 册:2009-9-26
收藏
得分:0 
来过!
2010-02-03 20:25
零下七度
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2010-2-3
收藏
得分:0 
新手来报道
2010-02-03 22:13
dsyayo
Rank: 1
等 级:新手上路
帖 子:13
专家分:7
注 册:2010-1-29
收藏
得分:0 
观望
2010-02-05 19:51
快速回复:出个水题,看有多少能做出来的。
数据加载中...
 
   



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

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