林惜城


私信TA

用户名:reminder

访问量:31316

签 名:

等  级
排  名 91
经  验 9074
参赛次数 0
文章发表 95
年  龄 0
在职情况 学生
学  校 西安电子科技大学
专  业

  自我简介:

哈姆


解题思路:

(1)建一个大小为 N 的二维数组。

(2)定义一个计数器,每生成一节蛇就+1。

(3)生成蛇的顺序是斜着、从行开始,比如蛇的第二条斜线,就是在 (1, 0) 和 (0, 1) 的位置按顺序生成。


注意事项:

输出时没有对每行的最后一个空格做要求,因为我没处理也通过了。


参考代码:

// 题目 1097: 蛇行矩阵
#include <iostream>
#include <vector>

using namespace std;

int main() {
	int N = 0;
	cin >> N;
	vector<vector<int>> matrix(N, vector<int>(N, 0)); // 全0的N*N矩阵
	int count  = 1; // 计数器,一直递增
	for (int i = 0; i < N; ++i) {
		for (int j = i; j >= 0; --j) {
			matrix[j][i - j] = count++; // 生成蛇形矩阵
		}
	}
	for (int i = 0; i < N; ++i) {
		for (int j = 0; j < N - i; ++j) {
			cout << matrix[i][j] << " ";
		}
		cout << endl; // 未处理每行的最后一个空格
	}
	return 0;
}


 

0.0分

10 人评分

  评论区

package xunlian;

import java.util.Scanner;

public class 蛇形矩阵 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count=1;
        int [][]arr=new int[n][n];
        for (int i=0;i<n;i++){
            for (int j=i;j>=0;j--){
                arr[j][i-j]=count;
                count++;
            }
        }
        for (int i=0;i<n;i++){
            for (int j=0;j<n-i;j++){
                if (j==n-i-1){
                    System.out.print(arr[i][j]+"\n");
                }else {
                    System.out.
2022-11-07 16:49:12
  • «
  • 1
  • »