蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
例如,当输入5时,应该输出的三角形为:
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); int[][] arr = new int[num][num]; for(int i = 0 ; i<num ;i++){ arr[i][0] = (i*(i+1)/2)+1; System.out.print(arr[i][0] + " "); for(int j = 1;j<num - i;j++){ arr[i][j] = arr[i][j-1] + (i+j+1); System.out.print(arr[i][j]+" "); } System.out.println(); } } }
import java.util.Scanner; /** 转换成字符串截取与输出,先循环打印出最长的一组, 把这一组每次都从第一个空格出截取到最后一个字符, 挨个取出字符转换成数字并减一作为新的一行 */ // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int N = in.nextInt(); int a = 1; String str = ""; for (int i = 1; i < N; i++) { if (i == 1) { str += String.valueOf(a) + " "; } a = a + i + 1; str += String.valueOf(a) + " "; } str = str.trim(); System.out.println(str); for (int i = 0; i < N - 1; i++) { if (str.length() > 3) { int go = 0; for (int k = 0; k < str.length(); k++) { if (str.charAt(k) == ' ') { go = k; break; } } str = str.substring(go, str.length()); str = str.trim(); } else { str = str.charAt(str.length() - 1) + ""; } String[] ss = str.split(" "); String temp = ""; for (int j = 0; j < ss.length; j++) { int get = Integer.parseInt(ss[j]) - 1; temp += String.valueOf(get) + " "; } temp = temp.trim(); System.out.println(temp); str = temp; } } } }
import java.util.Scanner; import java.util.Arrays; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int size = in.nextInt(); int[][] martix = new int[size][size]; int number = 1; for (int i = 0; i < size; i++) { for (int j = 0; j <= i; j++) { martix[i - j][i] = number; number++; } } for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (martix[i][j] == 0) { continue; } else { System.out.print(martix[i][j] + " "); } } System.out.println(""); } } }
import java.util.Scanner; /** 输入: 4 复制 输出: 1 3 6 10 2 5 9 4 8 7 */ public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] arr = new int[n]; StringBuilder builder = new StringBuilder(); for (int i = 0; i < n; i++) { if (i == 0) { arr[0] = 1; for (int j = 1; j < n; j++) { arr[j] = arr[j - 1] + j + 1; } } else { for (int k = i; k < n; k++) { arr[k] -= 1; } } for (int k = i; k < n; k++) { builder.append(arr[k] + " "); } builder.append("\n"); } System.out.println(builder.toString().trim()); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int a = in.nextInt(); for (int i = 0, num = 0; i < a; i++, num += i) { int sum = num; // 重置sum for (int j = 0; j < a - i; j++) { // 第i行有a - i个元素 if (j == 0) { // 第一列 sum += j + 1; // 计算第1列的元素 i和j从0开始 }else { // 计算行 sum += i + j + 1; // 计算当前行后续元素 } System.out.print(sum + " "); } System.out.println(); } } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int num = in.nextInt(); int mark = num;//通过mark-- 去控制每一行的数量 String res = ""; int first = 1;//第一列的数 int firstmid = 0;//第一列的中间值 1 2 3 for (int i = 1; i <= num; i++) { int mid = i;//第一行的中间值 2 3 4 first += firstmid; int next = first; //拼接每一行 for (int j = 1; j <= mark; j++) { if (j > 1) { next += mid; res += " " + next; } else { res += next; } mid++; } System.out.println(res); res = ""; firstmid++; mark--; } } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int d = 1, c1 = 0; for(int i = 0; i < n; i++){ d += c1++; int c2 = i+2, b = d; for(int j = i; j < n; j++){ System.out.print(b + " "); b += c2++; } System.out.println(); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = 1; for(int i=0; i<a; i++){ b += i; int c = 2+i; int d = b; for(int j=i; j<a; j++){ System.out.print(d+" "); d += c; c++; } System.out.println(); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int len=Integer.valueOf(in.nextLine()); int arr[][]=new int[len][len]; int start=0; for(int i=0;i<len;i++){ int i2=i; for(int j=0;i2>=0;j++){ start++; arr[i2][j]=start; i2--; } } for(int i=0;i<len;i++){ for(int j=0;j<len-i;j++){ if(j==len-i-1){ System.out.println(arr[i][j]); }else{ System.out.print(arr[i][j]+" "); } } } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int a = in.nextInt(); //每行第一个数字 int first = 0; // 外层循环一共有多少行 for (int i = 0; i < a; i++) { int sum = 0; //内层循环每行有多少个数字 for (int j = i; j < a; j++) { if (sum == 0) { //每行第一个数字规则 first += j; sum = first + 1; } else { //每行除第一个之外的数字规则 sum += j + 1; } //打印数字 System.out.print(sum + " "); } //换行 System.out.println(); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int index=in.nextInt(); // 注意 hasNext 和 hasNextLine 的区别 int arr[][]=new int[100][100]; arr[0][0]=1; int row=2; int col=1; //生成第一行、第一列蛇形矩阵 for(int i=1;i<100;i++){ arr[0][i]=arr[0][i-1]+row; row+=1; arr[i][0]=arr[i-1][0]+col; col+=1; } //开始双重循环创建蛇形矩阵100×100 int begin=2; for(int i=1;i<100;i++){ row=begin; for(int j=1;j<100;j++){ arr[i][j]=arr[i-1][j]+row; row+=1; } begin++; } //flag表示当前行输出有多少列 int flag=index; for(int i=0;i<index;i++){ for(int j=0;j<flag;j++){ System.out.print(arr[i][j]+" "); } System.out.println(); flag--; } } }
public class Test01 { public static void main(String[] args) { /* 找出值与下标的规律: arr[0][0]=1 arr[i][0]=i+arr[i-1][0] arr[i][j]=arr[i][j-1]+i+j+1 */ Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int n = in.nextInt(); int[][] arr = new int[n][n]; for (int i = 0; i < arr.length; i++) { if(i==0){ arr[0][0]=1; }else{ arr[i][0]=i+arr[i-1][0]; } System.out.print(arr[i][0]+" "); for (int j = 1; j < arr[0].length-i; j++) { arr[i][j]=arr[i][j-1]+i+j+1; System.out.print(arr[i][j]+" "); } System.out.println(); } } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int high = in.nextInt(); int begin = 1; for (int i = 1; i <= high; i++) { // 控制几行 int b = begin; for (int j = i; j <= high; j++) { // 控制几列 System.out.print(b + " "); b = b + j + 1; } begin = begin + i; System.out.println(""); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] arr = new int[n][n]; int seg1 = 1, seg3 = 1; for(int i = 0; i < n; i++){ int seg2 = seg3; for(int j = 0; j < n; j++){ if(j == 0) arr[i][j] = seg1; else arr[i][j] = arr[i][j-1] + seg2; seg2++; } seg1 += seg3; seg3++; } for(int i = 0; i < n; i++){ for(int j = 0; j < n - i; j++){ System.out.print(arr[i][j] + " "); } System.out.println(); } } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); int[][] arr=new int[a][]; int columnStart=1; for(int i=0;i<a;i++){ arr[i]=new int[a-i]; columnStart=columnStart+i; arr[i][0]=columnStart; System.out.print(arr[i][0]+" "); int num=columnStart; for(int j=1;j<arr[i].length;j++){ arr[i][j]=num+i+j+1; num=arr[i][j]; System.out.print(arr[i][j]+" "); } System.out.println(); } } } }
import java.io.*;//蛇形矩阵,利用二维数字组斜线方向每个循环下标规律控制数字的填入顺序 /** 使用方法:Integer.parseInt(s.readLine());br.append(arr[i][j]).append(" "); */ public class Main { public static void main(String[] args) throws IOException { BufferedReader s = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(s.readLine());//使用Integer不用导包 int[][] arr = new int[n][n]; int num = 1; for (int i = 0; i < n; i++) { int count = i; while (count >= 0) { arr[count][i - count] = num; count--; num++; } } for (int i = 0; i < n; i++) { StringBuilder br=new StringBuilder(); for (int j = 0; j < n; j++) { if (arr[i][j] != 0) { br.append(arr[i][j]).append(" "); } } System.out.println(br); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int start = 1; // 注意行号 每行起点 每行循环次数和输入值的关系 for(int i = 1; i<=n; i++) { start = start + i - 1; System.out.print(start + " "); for(int j = i + 1,val = start; j <= n; j++) { val = val + j; System.out.print(val + " "); } System.out.println(); } } }