C语言求大神指错 !!!!
#include<stdio.h>#include<math.h>main(){intM,N,i,j,n,sum,f;while(scanf("%d",&n)!=EOF)...
#include<stdio.h>
#include<math.h>
main()
{
int M,N,i,j,n,sum,f;
while(scanf("%d",&n)!=EOF)
{ sum=1,f=1;
for(i=1;i<=n;i++)
{
sum=sum*i;
}
i=1;
while(i<=n)
{
if(i==n)
{
printf("\n");
}
else
{
if(i<n)
{
for(j=1;j<=i;j++)
f=j*f;
printf("%d ",f/sum);
}
}
i++;
}
}
}
哪里错了.....求大神指教
题目 杭电ACM2032
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1
1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1
1 1
1
1 1
1 2 1 展开
#include<math.h>
main()
{
int M,N,i,j,n,sum,f;
while(scanf("%d",&n)!=EOF)
{ sum=1,f=1;
for(i=1;i<=n;i++)
{
sum=sum*i;
}
i=1;
while(i<=n)
{
if(i==n)
{
printf("\n");
}
else
{
if(i<n)
{
for(j=1;j<=i;j++)
f=j*f;
printf("%d ",f/sum);
}
}
i++;
}
}
}
哪里错了.....求大神指教
题目 杭电ACM2032
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1
1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1
1 1
1
1 1
1 2 1 展开
2个回答
展开全部
求解该问题有两个思路:
1,建立一个30*30的数组,根据输入的n,在数组左上角的n*n个单元填入杨辉三角,然后输出;
2,不用数组,直接根据杨辉三角的如下性质计算并输出:
第n行的第m个数为 C(n-1,m-1)(即为从n-1个不同元素中取m-1个元素的组合数)。求C(n-1,m-1)可根据递归公式 C(n+1,m)=C(n,m)+C(n,m-1)设计一个递归函数。
1,建立一个30*30的数组,根据输入的n,在数组左上角的n*n个单元填入杨辉三角,然后输出;
2,不用数组,直接根据杨辉三角的如下性质计算并输出:
第n行的第m个数为 C(n-1,m-1)(即为从n-1个不同元素中取m-1个元素的组合数)。求C(n-1,m-1)可根据递归公式 C(n+1,m)=C(n,m)+C(n,m-1)设计一个递归函数。
追问
能不能给个代码参考下 谢谢
追答
这是用第一种方法的代码:
#include
int main(){
unsigned int i,j,n,m;
while(scanf("%d",&n)!=EOF){
unsigned a[31][31]={1};
for(i=1; i<=n; i++)
for(j=1; j<=i; j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1; i<=n; i++){
for(j=1; j<=i; j++)
printf("%10d",a[i][j]);
printf("\n");
}
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询