#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int a[10000][10000];
int i,j;
int N,sum=0;
int b[10000];
scanf("%d",&N);
for(i=0;i<100;i++)
{
b[i]=i+1;
}
a[0][0]=1;
a[1][0]=1;a[1][1]=1;
for(i=2;i<100;i++)
{
for(j=0;j<i+1;j++)
{
if(j==0) a[i][j]=1;
else if(j==i) a[i][j]=1;
else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
for(i=0;i<100;i++)
{
for(j=0;j<i+1;j++)
{
if(a[i][j]==N)
{
printf("%d",sum+j+1);
}
sum+=b[i];
}
}
return 0;
}
没有输入的画面,直接跳出程序,不知道是哪里出了问题,杨辉三角,单独测试过,是可以正常显示的
原因是 int a[10000][10000];数组太大了,程序申请不到这么大空间,直接崩溃掉了。
一是将数组大小减小,二是将这个数组放到main函数外面,变为全局变量。全局变量支持更大的数组空间申请
参考:
#include <stdio.h>
void yhtriangle(int yanghui[10][10]){
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",yanghui[i][j]);
}
printf("\n");
}
}
int main()
{
int i,j;
int yanghui[10][10];
for(i=0;i<10;i++)
{
yanghui[i][0]=1;
yanghui[i][i]=1;//杨辉三角形每行第一列和最后一列数据都为1
for(j=1;j<i;j++)
{
yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];//每个数字等于肩上两数字之和
}
}
//打印
yhtriangle(yanghui);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!