- 十字型的徽标(递归)
package org.vo;
import java.util.Scanner;
public class text8 {
/*
* 十字型的徽标
*/
public static void main(String[] args) {
Scanner scann=new Scanner(System.in);
int num=Integer.parseInt(scann.next());
int num1=9+(num-1)*4;
int arr[][]=new int[num1][num1];
fun(arr,num1,0,2,1);
show(arr);
}
public static void fun(int arr[][],int num,int x,int y,int k){
if(num-x==1)
return;
for(int i=x;i<num-x;i++){
for(int j=y;j<num-y;j++){
arr[i][j]=k;
arr[j][i]=k;
}
}
k=k==1?0:1;
fun(arr,num,x+1,y+1,k);
}
public static void show(int arr[][]){
//打印
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
if(arr[i][j]==1){
System.out.print(“$”);
}else{
System.out.print(“.”);
}
}
System.out.println();
}
}
}
2.打印一个 N*N 的方阵
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int arr[][] = new int[num][num];
for (int i = 0; i < num; i++) {
for (int j = 0; j < num; j++) {
arr[i][j] = 'T';
}
}
for (int i = 1; i < num - 1; i++) {
for (int j = 1; j < num - 1; j++) {
arr[i][j] = 'J';
}
}
fun(2, 2, arr, 1, num);
show(arr);
}
public static void fun(int x, int y, int[][] arr, int count, int num) {
if (num - x == 1)
return;
for (int i = x; i < num - x; i++) {
for (int j = y; j < num - y; j++) {
arr[i][j] = count;
}
}
fun(x + 1, y + 1, arr, count + 1, num);
}
private static void show(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (i == 0 || j == 0 || i == arr.length - 1
|| j == arr[i].length - 1 || i == 1 || j == 1
|| i == arr.length - 2 || j == arr[i].length - 2) {
System.out.print((char) arr[i][j]);
} else {
System.out.print(arr[i][j]);
}
}
System.out.println();
}
}
3.矩阵中填数. 当给出 N*N 的矩阵(倒填)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int arr[][] = new int[num][num];
int k = num * num;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = k;
k--;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
4.矩阵中填数. 当给出 N*N 的矩阵(回转填数)
/**
* 矩阵中填数. 当给出 N*N 的矩阵(回转填数)
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
int arr[][] = new int[num][num];
int k = num * num;
for (int i = 0, j = 0, d = 0, x = 1; x <= k; x++) {
arr[i][j] = x;
if (d == 0)// 方向向下
{
if (i + 1 < arr.length && arr[i + 1][j] == 0) {
i++;
} else {
d = 1;
}
}
if (d == 1)// 方向向右
{
if (j + 1 < arr[i].length && arr[i][j + 1] == 0) {
j++;
} else {
d = 2;
}
}
if (d == 2)// 方向向上
{
if (i - 1 >= 0 && arr[i - 1][j] == 0) {
i--;
} else {
d = 3;
}
}
if (d == 3)// 方向向左
{
if (j - 1 >= 0 && arr[i][j - 1] == 0) {
j--;
} else {
d = 0;
i++;
}
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
5.杨辉三角
/**
* 杨辉三角
*/
public static void main(String[] args) {
int num = 10;// 打印10行的杨辉三角,可以任意指定
int arr[][] = new int[num][];
// 给数组列数开辟空间一行比一行多一列
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i + 1];
}
// 给数字每一行的第一个和最后一个赋值为1
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][0] = 1;
arr[i][arr[i].length - 1] = 1;
}
}
// 根据杨辉三角规律给其它地方赋值
for (int i = 2; i < arr.length; i++) {
for (int j = 1; j < arr[i].length - 1; j++) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
}
// 打印杨辉三角
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}