这里有道题,大侠们给点思路好嘛!
利用队列写出打印杨辉三角形的前n行的程序。(杨辉三角形的特点是两个腰上的数字都为1,其它位置上的数字是其上一行中与之相邻的两个整数之和。)
各位大侠给点思路好嘛!
[解决办法]
http://topic.csdn.net/t/20021109/08/1161618.html
[解决办法]
#include <stdio.h>int main(){ int n,i,k,j = 0,matrix[12][12];//这里最多只容纳12行的杨辉三角 printf("Enter n:");scanf("%d",&n); k = n - 1; for (i = 0;i < n;i ++) { for (j = 0;j < k;j ++) printf("%3s"," "); matrix[i][0] = 1;printf("%3d%3s",matrix[i][0]," "); for (j = 1;j < i;j ++) { matrix[i][j] = matrix[i-1][j-1] + matrix[i-1][j]; printf("%3d%3s",matrix[i][j]," "); } if(i == 0) { printf("\n"); } else { matrix[i][j] = 1;printf("%3d%3s\n",matrix[i][j]," "); } k --; } return 1;}
[解决办法]
#include <stdio.h>
int main()
{
int n,i,k,j = 0,matrix[12][12];//这里最多只容纳12行的杨辉三角
printf("Enter n:");scanf("%d",&n);
k = n - 1;
for (i = 0;i < n;i ++)
{
for (j = 0;j < k;j ++) printf("%3s"," ");
matrix[i][0] = 1;printf("%3d%3s",matrix[i][0]," ");
for (j = 1;j < i;j ++)
{
matrix[i][j] = matrix[i-1][j-1] + matrix[i-1][j];
printf("%3d%3s",matrix[i][j]," ");
}
if(i == 0)
{
printf("\n");
} else { matrix[i][j] = 1;printf("%3d%3s\n",matrix[i][j]," "); }
k --;
}
return 1;
}
#include <stdio.h>int main(){ int n,i,k,j = 0,matrix[12][12];//这里最多只容纳12行的杨辉三角 printf("Enter n:");scanf("%d",&n); k = n - 1; for (i = 0;i < n;i ++) { for (j = 0;j < k;j ++) printf("%3s"," "); matrix[i][0] = 1;printf("%3d%3s",matrix[i][0]," "); for (j = 1;j < i;j ++) { matrix[i][j] = matrix[i-1][j-1] + matrix[i-1][j]; printf("%3d%3s",matrix[i][j]," "); } if(i == 0) { printf("\n"); } else { matrix[i][j] = 1;printf("%3d%3s\n",matrix[i][j]," "); } k --; } return 1;}
[解决办法]
#include<stdio.h>
define n 10 要打印几行可以改N的数值。
main()
{int i,j,a[n][n] ;
for(i=0;i<=9;i++) 将数组第一列和对角线置0
for(i=0;i<=9;i++)
a[i][j]=a[0][j]=1;
for(i=1;i<=9;i++)
for(i=1;i<=9;i++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=9;i++)
for(i=1;i<=9;i++)
prinft("%d",a[i][j]);
}
思路是这样的,、
先将数组第一列和对角线置0;
然后下中间的数就等于前一行同列和前一行的前一列之和
1
11
121 如出2=1+1
1331
13641
输出时注意一下格式就行了。