蓝桥杯-------基础训练--杨辉三角、查找整数,数列特征、01字串--Method

一、杨辉三角

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

1

1 1

1 2 1

1 3 3 1

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

       解题思想:杨辉三角对于每一个学生来说都不陌生。而用编程重现这个图案就要有相应的办法。我的思想是,首先创建一个二位数组,然后分两步解决:
        1)因为每一行的第一个数最后一个数都是1,这是一成不变的,所以将两边的1,利用循环先行解决;
        2)之后根据数学规律,每一项的值等于同一列,上一行的值加上下一列上一行的值,用代码完成这种思想即可;
最后将二位数组输出即可。
下面给出代码:

import java.util.Scanner;

public class 杨辉三角形 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int s[][] = new int[n][n];            //数组初始化
		for(int i = 0; i < n; i++)            //给定两边的一
		{
			s[i][i] = s[i][0] = 1; 
		}
		for(int i = 2;i < n; i++)             //给定中间部分的值
			for(int j = 1;j < i; j++)
			{
				s[i][j] = s[i-1][j-1]+s[i-1][j];
			}
		for(int i = 0; i < n; i++){           //输出二维数组
			for(int j = 0; j <= i; j++)
			{
				System.out.print(s[i][j]+" ");
			}
			System.out.println();
		}
		
	}

}

二、查找整数

     问题描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。

     解题思想:其实,这就是对Java语言的基本结构,语法的应用。首先录入这个数列,然后对该数列进行便历,而在遍历的同时,应该对每一个值与给定检查的值进行判断。若成立,则进行位置的输出即可。

下面给出代码:

import java.util.Scanner;

public class 查找整数 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int s[] = new int[n];
		for(int i = 0; i < n; i++)
		{
			s[i] = sc.nextInt();
		}
		int temp = sc.nextInt();
		System.out.println(fun(s,temp));
	}
	public static int fun(int r[],int k)
	{
		for(int i = 0;i < r.length;i++ )
		{
			if(r[i] == k)
			{
				return i+1; 
			}
		}
		return -1;
	}
}


三、数列特征
       问题描述:给出n个数,找出这n个数的最大值,最小值,和。

     解题思想:这个题的解决重点在于排序,对给定数列进行升序或者降序的排序后,输出整个数列的第一个值和最后一个值即可获得最大值和最小值。而和就是循环取得元素进行累和即可。下面给出代码:

import java.util.Arrays;
import java.util.Scanner;

public class 数列特征 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int sum = 0;
		int n = sc.nextInt();
		int a[] = new int[n];
		for(int i = 0;i < n;i++)
		{
			a[i] = sc.nextInt();
			sum+=a[i];
		}
		Arrays.sort(a);
		System.out.println(a[n-1]);
		System.out.println(a[0]);
		System.out.println(sum);
	}
}

四、01字串

    问题描述:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
                    00000
                    00001
                    00010
                    00011
                    00100
请按从小到大的顺序输出这32种01串。

     解题思想:这道题的重点其实就是对全排列的应用。设定五个变量对应五个位数,依次由0-9进行多层循环然后得出该数即可。下面给出代码:

public class 零一字串 {
	public static void main(String[] args) {
		for(int i = 0;i < 2; i++)
			for(int j = 0;j < 2; j++)
				for(int k = 0;k < 2; k++)
					for(int m = 0;m < 2; m++)
						for(int n = 0;n < 2; n++)
						{
							System.out.print(i);
							System.out.print(j);
							System.out.print(k);
							System.out.print(m);
							System.out.print(n);
							System.out.println();				
						}						
	}

}

着重提一下:对于全排列的应用,在蓝桥杯的比赛中几乎是一个必考的点,所以最好掌握一种到两种全排列的方法,我的另一篇博客对全排列进行了讲解,欢迎提出意见和建议。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值