杨辉三角
一维数组打印杨辉三角
package com.*****;
import java.util.Arrays;
import java.util.Scanner;
//一维数组实现杨辉三角
//1 int[] a={1};
//1 1 int[] b={a.length+1}; b[0]=1;b[b.length-1]=1;
//1 2 1 int[] c={b.length+1}; c[i]=b[i]+b[i-1];
//1 3 3 1
//1 4 6 4 1
public class Yhui {
//思路:创建一个一维数组int[] a={1};
//创建数组,下一层是上一层的长度+1
//下层的数值是上一层对应位置的数值加上它左边的数
public int[] yanghui(int[] a)
{
int[] arr1=new int[a.length+1];//下一层是上一层的长度加一
arr1[0]=1;
arr1[arr1.length-1]=1;
for(int i=1;i<arr1.length-1;i++)//要保证上一层的数组不会越界
{
arr1[i]=a[i]+a[i-1];
}
return arr1;
}
public static void main(String[] args) {
T1 t=new T1();
int[] a={1};
Scanner scan=new Scanner(System.in);
int x=scan.nextInt();
System.out.println(Arrays.toString(a));
for(int i=2;i<=x;i++)
{
a=t.yanghui(a);
System.out.println(Arrays.toString(a));
}
}
}
二维数组打印杨辉三角
package com.review;
import java.util.Random;
//二维数组实现杨辉三角
//思路:
//1.首先创建一个二维数组
//2.将二维数组中的所有边界位置均设值为1
//3.然后根据杨辉三角的特性计算其他位置的值,并记录
public class Yhui{
public static void main(String[] args) {
int line=8;
int[][] arr=new int[line][line];
for(int i=0;i<arr.length;i++)
{
for(int j=0;j<=i;j++)
{
if(j==0||j==i)
{
arr[i][j]=1;
}
else {
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
}
for(int[] x:arr)
{
for(int y:x)
{
if(y==0)
{
System.out.print(" ");
}
else
{
System.out.print(y+" ");
}
}
System.out.println();
}
}
}
约瑟夫环(死亡游戏)
package com.****;
import java.util.Arrays;
//约瑟夫环死亡游戏
public class Game{
//游戏规则:每个人轮流说一个数字,如果是3的倍数则死亡,直到最后只剩下一个人活着为止
//思路:
//1.首先创建一个数组,用来存储人的存活状态
//2.开始游戏,每个人依次说一个数,说到3的倍数的人将状态改为死亡
//3.直到只剩下一个人,结束游戏
public static void main(String[] args) {
boolean[] person =new boolean[5];
Arrays.fill(person, true);//状态全为存活
// 开始游戏
int alive=person.length;//起始状态全部存活
int num=1;
while(alive>1)//结束游戏的条件,只能剩下一个人
{
for(int i=0;i<person.length;i++)//确保没次都只会是这些人参加游戏
{
if(person[i])//确保他活着,不和已死的人玩
{
System.out.printf("%d喊了%d%n",i,num);
if(num%3==0)//说到3的倍数时就可以原地去世了
{
person[i]=false;
alive--;
System.out.printf("并说我死了%n");
}
num++;//只要活着就会在消耗这个数
}
}
}
System.out.println(Arrays.toString(person));
for(int i=0;i<person.length;i++)
{
if(person[i])
{
System.out.printf("%d号位置活到了最后",i+1);
}
}
}
}