英雄会-----杨辉三角-----杨辉三角的变形

杨辉三角的变形

杨辉三角

杨辉三角大家都熟悉,二项式n次方展开式的系数可排列成一个三角形的数表,成为杨辉三角。形似:

1

     1   1

  1   2   1

1  3   3  1

输出杨辉三角的代码:

import java.util.*;
public class Yanghui{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in);
		int n = Integer.parseInt(scan.next());
		int mat[][] = new int[n][];
		//
		int i,j = 0;
		for(i=0;i<n;i++){
			mat[i] = new int[i+1];
			mat[i][0] = 1;
			mat[i][i] = 1;
			for(j = 1;j < i; j++){
				mat[i][j] = mat[i-1][j-1]+mat[i-1][j];
			}
		}
		for(i = 0;i < mat.length;i++){
			for(j = 0; j<n-i;j++){
				System.out.print(" ");
			}
			for(j = 0;j<mat[i].length;j++){
				System.out.print(mat[i][j]+" ");
			}
			System.out.println();
		}
	}
}

按照这个思路,就在庞果网做了一道“杨辉三角的变形"。

题目:

         1

     1   1  1

  1  2   3  2  1

1  3  6   7  6  3  1

以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。

求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。

输入n(n <= 1000000000)


开始的思路就是:将所有的数字都保存到二维数组中,然后在数组的最后一行开始寻找第一个偶数。


代码如下

public class Test
{
	public static int run(int n)
	{
		int result = -1;
		int mat[][] = new int[n][];
		int i, j, k =0;
		for(i = 0;i < n;i++ ){
			mat[i] = new int[2*(i+1)-1];
			mat[i][0] = 1;
			for(j = 1; j< 2*(i+1)-1;j++){
				//left part
				if(j<=i){
					if(j-2<0){//针对第二列,第二列的元素没有左上角
						if(j < mat[i-1].length){
							mat[i][j] = mat[i-1][j]+mat[i-1][j-1];
						}else{//针对第二行 1  1  1
							mat[i][j] = mat[i-1][j-1];
						}
					}else{
						mat[i][j] = mat[i-1][j]+mat[i-1][j-1]+mat[i-1][j-2];
					}
					k = j;
				}else{
				//right part
					mat[i][j] = mat[i][--k];
				}
				
			}
		}
		//search
		
		for(j = 0; j < mat[n-1].length;j++){
			if(mat[n-1][j]%2 == 0){
				result = j+1;
				break;
			}
		}
		return result;
	}
	
	public static void main(String []args)
	{
		System.out.println(run(1));
	}
}

但是提交之后发现超时了,


无奈修改了半天,还是超时,突然看到题目上有一个上线【1000000000】,才明白过来这样把每个数字都求出来必然会超时。

    最后想了半天还是没想起来好办法。只好求助与强大的百度了。看到网友的答案之后才发下原来如此的简单。

唉。思维一点都不活跃。只怪自己脑子没有转过来圈啊!!!谨记谨记!

具体答案参见下面几篇博文。

http://blog.csdn.net/SunnyYoona/article/details/16917447

http://blog.csdn.net/ToYueXinShangWan/article/details/15021313

http://blog.csdn.net/xhu_eternalcc/article/details/14390617

http://blog.csdn.net/jenly121/article/details/14521287


已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页