精华内容
下载资源
问答
  • 打印杨辉三角形

    2020-08-07 18:26:51
    //申请一个数储存计算杨辉三角形 using namespace std; void PrintSpace(int n) { //打印n个空格 for (int i = 0; i < n; i++) { cout << ' '; } } int main() { int n = 6; // cin>>n;//题目...
    #include<iostream>
    #define Max 10
    int Y[Max][Max] = {0};//申请一个数储存计算杨辉三角形
    using namespace std;
    void PrintSpace(int n) { //打印n个空格
    	for (int i = 0; i < n; i++) {
    		cout << ' ';
    	}
    }
    int main() {
    	int n = 6;
    //	cin>>n;//题目要求6
    	//初始化三角形的前两行。同时从 1 1 开始使用数组
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j <= i; j++) {		
    			if (j == 0 || j == i) Y[i][j] = 1; //杨辉Y[i][j]中;每一行第一个为1,最后一个为1;
    			//其中第一个即为i=0时,最后一个为,i=j的时候。  其中i表示行的时候是从第0行开始的,因此j要+1,也就是从0到i;
    
    			else Y[i][j] = Y[i - 1][j] + Y[i - 1][j - 1];
    			
    		}
    	}
    	for (int i = 0; i < n; i++) {
    		PrintSpace(n - (i+1)); //第一行应该有n个空格。第二行有n-1个空格。 由于数组中,从第0行开始,因此应该有n-(i+1)个空格
    		int flag = 0;
    		for (int j = 0; j <= i; j++) {
    			if (flag == 0)cout << Y[i][j];
    			else cout << ' ' << Y[i][j];
    			flag++;
    		}
    		cout << endl;
    	}
    }
    
    

    在这里插入图片描述

    展开全文
  • 先说前提,这题我用自己的想法只过了50%,其他用例超时了。 官网题目链接 大多数人想到的直接暴力,其实我也差不多只是很多地方思路改进 用一个二维数组存起来同时计数,遇到的时候返回计数值 ...

    先说前提,这题我用自己的想法只过了50%,其他用例超时了。
    官网题目链接

    大多数人想到的直接暴力,其实我也差不多只是很多地方思路改进

    • 用一个二维数组存起来同时计数,遇到的时候返回计数值
      最先应该是这个想法,然后我想到在构造一行的时候,当前值只与上以行的数有关,所以用一个一维数组存上一行,一个一维数组存这一行。
      这时候应该想到可不可以只用一个数组,只是要几个变量来指出哪些和哪个位置要改变,然后变量就多了。用合理的数据结构可以减轻自己的思维负担。
    • 用一个队列,利用先进先出的原则,把两个两个相加的值加入队列后相当于下一行的值,运算的次数相当于原本队列的长度len-1次。
    		len=que.size();
    		que.push(1);//这个是当前行的第一个数 1
    		for(int i=1;i<len;i++)
    		{
    			int fir=que.front();
    			que.pop();
    			int sec=que.front();//先不出列,作为下一个数的加数
    			int temp=fir+sec;
    			if(temp==N)
    			return (level*(level+1))/2+i+1;//这里等会讲到
    			que.push(temp);
    		}
    		que.pop();//这是上一行的1,运算完成之后出列
    		que.push(1);//这是当前行的最后一个数 1
    		//注意,这里并不可以抵消省略,因为出列的和新入列的顺序不同
    

    当找到目标值时,计算是第几个数:
    假定目标值是4,在该图位置为第一个:
    在这里插入图片描述
    结果值为①+②+1,这里的1是目标值本身
    1、从上往下数发现第n行就有n个数,所以目标值以上的数,即①,
    和为1+2+3+…+(n-1)个数,等差数列求和为(n*(n-1))/2这里的n为目标值所在行数-1
    2、目标值所在行以前的数就为i
    最后,总体代码为:

    #include<bits/stdc++.h>
    using namespace std;
    //int N=1e9;
    int traid(int N)
    {
    	if(N==1)return 1;
    	queue<int> que;
    	que.push(1);
    	que.push(1);
    	int len,level=1;
    	while(1)
    	{
    		++level;
    		len=que.size();
    		que.push(1);
    		for(int i=1;i<len;i++)
    		{
    			int fir=que.front();
    			que.pop();
    			int sec=que.front();
    			int temp=fir+sec;
    			if(temp==N)
    			return (level*(level+1))/2+i+1;
    			que.push(temp);
    		}
    		que.pop();
    		que.push(1);
    		if(level>=1e8)
    		break;
    	}
    	return 0;
    }
    int main()
    {
    	int N;
    	cin>>N;
    	cout<<traid(N)<<endl;
    }
    
    展开全文
  • 杨辉三角形

    2015-12-16 17:57:42
    杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。   它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。   下面给出了杨辉三角形的前4行:    1    1 1    1 2 1   1...
    问题描述

    杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

      

    它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

      

    下面给出了杨辉三角形的前4行:

      

       1

      

      1 1

      

     1 2 1

      

    1 3 3 1

      

    给出n,输出它的前n行。

    输入格式

    输入包含一个数n。

    输出格式
    输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
    样例输入
    4
    样例输出
    1
    1 1
    1 2 1
    1 3 3 1
    数据规模与约定

    1 <= n <= 34。


    #include<stdio.h>
    int main()
    {
    	int a[35][35],i,j,n; 
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	for(j=0;j<n;j++)
    	if(j==0)
    	a[i][j]=1;
    	else
    	a[i][j]=0;
    	for(i=1;i<n;i++)
    	for(j=1;j<n;j++)
    	a[i][j]=a[i-1][j-1]+a[i-1][j];
    	for(i=0;i<n;i++)
    	for(j=0;j<n;j++)
    	{
    		if(a[i][j]==0)
    		{
    			printf("\n");
    			break;
    		}
    		printf("%d ",a[i][j]);
    	 } 
    	 return 0;
    }

    #include<stdio.h>
    int main()
    {
    	int i,j,a[40];
    	int n;
    	scanf("%d",&n);
    	a[0]=1;
    	printf("%d ",a[0]);
    	for(i=2;i<=n;i++)
    	{
    		a[i-1]=1;
    		for(j=i-2;j>0;j--)
    		a[j]+=a[j-1];
    		for(j=0;j<i;j++)
    		printf("%d ",a[j]); 
    		printf("\n");
    	
    	 } 
    	 return 0;
     } 

    #include<stdio.h>
    int main()
    {
    	int a[35][35],i,j;
    	int n;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		a[i][0]=1;
    		a[i][i]=1;
    	}
    	for(i=2;i<n;i++)
    	for(j=1;j<i;j++)
    	a[i][j]=a[i-1][j-1]+a[i-1][j];
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<=i;j++)
    		printf("% 6d",a[i][j]);
    		printf("\n");
    	}
    	return 0;
    }

    展开全文
  • 杨辉三角形Java实现

    2021-12-04 14:24:29
    一、杨辉三角形的特点 (1)每个数等于它上方两数之和。 (2)每行数字左右对称,由1开始逐渐变大。 (3)第n行的数字有n项。 (4)前六行的杨辉三角形如图: 二、Java实现前六行杨辉三角形 (1)创建...

    一、杨辉三角形的特点

    (1)每个数等于它上方两数之和。

    (2)每行数字左右对称,由1开始逐渐变大。

    (3)第n行的数字有n项。

    (4)前六行的杨辉三角形如图:

    二、Java实现前六行杨辉三角形

     (1)创建一个6*6的二维数组

    (2)利用两个for循环遍历输出

    (3)由上图不难得出三角形的两边都为1,中间的项为其上一行同一列的值加上上一行上一列的值。

    (4)但是大部分所看到的杨辉三角形都是等腰三角形,如图:

     在运行后可以正常输出倒是出现了一个数组下标越界的异常,开始我认为是应为空格占了二维数组的空间,但是当我将int arr[][] = new int [length][length]改为int arr[][] = new int [length][2*length]后依然出现这个错误,认真检查代码后发现

    第一个for循环中x<=length中多了一个"="号 ,导致x多循环了一次,将其删除后如图:

    展开全文
  • static void YangHui(int row) { int col = 2 * row - 1;/*行和列的关系*/ int[][] arr = new int[row][col];/*确定数组的长度*/ for (int i = 0; i < row; i++) { for (int j = 0;... if (j == row + i || j ==...
  • 求整个杨辉三角形

    2018-07-16 22:05:41
    import java.util.ArrayList; public class Solution { public ArrayList&lt;ArrayList&lt;Integer&gt;&gt; generate(int numRows) { if(numRows&lt;0) return null;......
  • 杨辉三角形(C++)

    2020-01-23 15:02:42
    杨辉三角形 【问题描述】 杨辉三角形是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。它有以下几个特点: 1、每行端点与结尾的数为1. 2、每个数等于它上方两数...
  • 以下为输出“杨辉三角形”的简单示例:1.用c语言实现的版本#includeint c(int x,int y);void main(){int i,j,n=0;printf("Please input the value of n(n>=0):");/*控制输入正确的值以保证屏幕显示的图形正确*/...
  • 杨辉三角形实现过程详解-C语言基础

    万次阅读 多人点赞 2018-12-26 06:45:45
    这一篇要探讨的是“杨辉三角形的实现以及如何人工走循环”。涉及的知识点和内容很少,主要是想说明如何看懂循环,如何跟着循环走。属于C语言基础篇。 学习编程的人,在学习的初期,几乎都会接触杨辉三角形。但...
  • python实现杨辉三角形

    2020-11-21 03:00:55
    原博文2020-03-14 23:23 −代码实现:# python实现杨辉三角形def yanghui(): # 定义第一行列表为[1] line = [1] while True: # yield的作用:把一个函数变成生成器,同时返回一个list,下次从yield的下条语句执行 ...
  • for循环输出杨辉三角形(java)杨辉三角形(java)1.代码代码如下(示例):public class YanghuTriangle {public static void main(String[] args) {int triangle[][]=new int[10][]; //创建二维数组//遍历二维数组的第一...
  • 问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)^n的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:11 11 2 11 3 3 1下面要求用户输入一个...
  • #include<stdio.h> int main() { int a[10][10],i,j; for(i=0;i<10;i++) { a[i][0]=1; a[i][i]=1; } for(i=2;i<10;i++) { for(j=1;j<i;j++) { a[i][j]=a[i-1][j]+a[i-1][j-1];... }...
  • 第十二届蓝桥杯 Python组 试题 G: 杨辉三角形

    千次阅读 多人点赞 2021-04-18 21:02:15
    第十二届蓝桥杯 Python组 试题 G: 杨辉三角形   大家好,我叫亓官劼(qí guān jié ),在GitHub & CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在GitHub & CSDN中写博客,唯一...
  • 用Javascript输出杨辉三角形(锻炼思维)

    千次阅读 多人点赞 2021-10-26 18:59:29
    本来我也是不会的,相当于没听过杨辉三角是什么东西,但是上网查了一下,了解了定义之后就有了思路,每一行左右都为1,并且每个数等于上一行左右两数之和。
  • 蓝桥杯2021年第十二届省赛真题-杨辉三角形 #include<bits/stdc++.h> using namespace std; long long n; long long C(long long q,long long x) { long long ans=1; for(int i=1,j=q-x+1;i<=x;i+...
  • 用队列打印杨辉三角

    2021-09-23 09:51:52
    队列的实现以及基本功能请参考:https://blog.csdn.net/qq_50504109/article/details/120384457 /** * 用队列打印杨辉三角的思路就是跟数组一样的,用前一列求出后面一列 * 不过队列不像数组有固定的公式可以求出...
  • 信息学奥赛C++语言:杨辉三角形

    千次阅读 2019-08-20 10:15:47
    输入正整数 n,输出杨辉三角形的前 n 行。例如,n=5 时,杨辉三角形如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 【输入】 一行一个正整数 n,1≤n≤20。 【输出】 共 n 行,第 i 行包含 i 个正整数,每个整数占宽度为5。 ...
  • 杨辉三角形思路:首相定义一个二维数组,将二位数组的内容初始化为1。再将一半打印出来。以10*10为例 然后在根据杨辉三角的特点,从第三行第二列开始将数字改变。每一个数字都是上一行的同一列的数字与上一行前一列...
  • 杨辉三角形实现过程详解-C语言基础 ...
  • 杨辉三角形(数组、函数、循环)

    千次阅读 2019-01-04 09:39:52
    【问题描述】 请编写函数求解实现用一维或二维数组存储杨辉三角形,并编写函数实现在屏幕上显示如下杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 ...
  • PTA——7-4 使用递归输出杨辉三角形

    千次阅读 2019-11-21 14:37:03
    输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现。 (1<=n<=10) 输入格式: 输入一个正整数n 输出格式: 输出n行的直角三角形的杨辉三角,两个数之间用空格分隔,...
  • 输出以下的杨辉三角形的前10行

    千次阅读 2019-06-17 19:29:13
    输出以下的杨辉三角形的前10行。 #include<iostream> using namespace std; int main() { int math[10][10]; int i,j; for(i=1;i<=10;i++) { for(j=1;j<=i;j++) { if(j==1 || i==j) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 937
精华内容 374
关键字:

杨辉三角形csdn

友情链接: 资料.zip