无语了..怎么全是1//
VC6.0编译:程序代码:
#include<stdio.h>
#include<stdlib.h>
int Binomial(int n,int k)
{
int i,j;
int **C=(int**)malloc(sizeof(int*)*(n+1));
for(i=0;i<n+1;++i) C[i]=(int*)malloc(sizeof(int)*(k+1));
for(i=0;i<=n;++i)
for(j=0;j<=(k>i?i:k);++j)
if(j==0||j==k) C[i][j]=1;
else C[i][j]=C[i-1][j]+C[i-1][j-1];
int ret = C[n][k];
for(i=0;i<n+1;++i) free(C[i]); free(C);
return ret;
}
int main(void)
{
int n,k;
while(scanf("%d,%d",&n,&k)!=EOF)
printf("%d\n",Binomial(n,k));
return 0;
}
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
int Binomial(int n,int k)
{
int i,j;
int **C=(int**)malloc(sizeof(int*)*(n+1));
for (i=0;i<n+1;++i) C[i]=(int*)malloc(sizeof(int)*(k+1));
for (i=0;i<=n;++i)
for (j=0;j<=(k>i?i:k);++j)
if (j==0||j==k) C[i][j]=1;
else C[i][j]=C[i-1][j]+C[i-1][j-1];
int ret = C[n][k];
for (i=0;i<n+1;++i) free(C[i]); free(C);
return ret;
}
int main(void)
{
int n,k;
while (scanf("%d,%d",&n,&k)!=EOF)
printf("%d\n",Binomial(n,k));
return 0;
}
#include<stdlib.h>
int Binomial(int n,int k)
{
int i,j;
int **C=(int**)malloc(sizeof(int*)*(n+1));
for (i=0;i<n+1;++i) C[i]=(int*)malloc(sizeof(int)*(k+1));
for (i=0;i<=n;++i)
for (j=0;j<=(k>i?i:k);++j)
if (j==0||j==k) C[i][j]=1;
else C[i][j]=C[i-1][j]+C[i-1][j-1];
int ret = C[n][k];
for (i=0;i<n+1;++i) free(C[i]); free(C);
return ret;
}
int main(void)
{
int n,k;
while (scanf("%d,%d",&n,&k)!=EOF)
printf("%d\n",Binomial(n,k));
return 0;
}
请问这个代码什么作用
[color=white]
[[it] 本帖最后由 雨中秣燕 于 2008-5-2 21:22 编辑 [/it]]
----------------解决方案--------------------------------------------------------
书上DP这章的第一个代码////
----------------解决方案--------------------------------------------------------
为什么我看的明白 就是不想去想 着程序有什么用
----------------解决方案--------------------------------------------------------
我是问你的个代码对应的什么题目
[color=white]
----------------解决方案--------------------------------------------------------
就是Dp来求二项式系数C(n,k)...
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
int Binomial(int n,int k)
{
int i,j;
int **C=(int**)malloc(sizeof(int*)*(n+1));
for(i=0;i<n+1;++i) C[i]=(int*)malloc(sizeof(int)*(k+1));
for(i=0;i<=n;++i)
for(j=0;j<=(k>i?i:k);++j)
{
if(j==0||j==k)
C[i][j]=1;//被这里限制住了
else
C[i][j]=C[i][j-1]+C[i-1][j-1];
printf("%d ",C[i][j]);
if(j==(k>i?i:k))
printf("\n");
}
int ret = C[n][k];
for(i=0;i<n+1;++i) free(C[i]); free(C);
return ret;
}
int main(void)
{
int n,k;
while(scanf("%d,%d",&n,&k)!=EOF)
printf("%d\n",Binomial(n,k));
return 0;
}
----------------解决方案--------------------------------------------------------
我真无语了,纯属书上印刷出错,应该j==i的变成j==k~
----------------解决方案--------------------------------------------------------
别直接照搬书的代码。。。。。。。。
最好理解后,自己独立写出。。。。。
[color=white]
----------------解决方案--------------------------------------------------------
饿。。。。谢谢燕子的建议///
今天看DP,手上两本书的描述不一样,本来是想对比起学, 弄到后面越看越没信心了............
----------------解决方案--------------------------------------------------------