首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >N由N个螺旋矩阵(1到平方(N))-意外输出

N由N个螺旋矩阵(1到平方(N))-意外输出
EN

Stack Overflow用户
提问于 2022-05-12 06:38:52
回答 1查看 79关注 0票数 -1

在试图为数字1到平方(N)创建N×N螺旋矩阵时,使用通常的螺旋矩阵算法,在其中一行中有一个即使在复查时也找不到的意外输出。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def getSpiralOrder(N):
  matrix = [ [ 0 for i in range(N) ] for j in range(N) ]
  c = 1
  rS = 0
  rE = len(matrix) 
  cS = 0
  cE = len(matrix[0]) 
  while(rS < rE and cS < cE):
   for i in range(cS , cE ):
     matrix[rS][i]=c
     c = c + 1
   rS += 1

   for i in range(rS , rE):
     matrix[i][cE - 1]=c
     c = c + 1 
   cE -= 1  
   for i in range(cS , cE):
     matrix[rE - 1][cE - i - 1]=c
     c =c + 1
   rE -= 1  
   for i in range(rS,rE):
     matrix[rE - i ][cS]=c
     c = c + 1
   cS += 1  
  
  return(matrix)

n = int(input())
print(getSpiralOrder(n))

输出应该是:[[1, 2, 3, 4], [12, 13, 14, 5], [11, 16 , 15, 6], [10, 9, 8, 7]]

但是接下来的输出是:[[1, 2, 3, 4], [12, 13, 14, 5], [16, 0, 15, 6], [10, 9, 8, 7]]

原来除了第三行之外,所有行都是正确的。

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 07:01:53

最后两个for循环是错误的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def getSpiralOrder(N):
    matrix = [ [ 0 for i in range(N) ] for j in range(N) ]
    c = 1
    rS = 0
    rE = len(matrix) 
    cS = 0
    cE = len(matrix[0]) 
    while(rS < rE and cS < cE):
        for i in range(cS , cE ):
            matrix[rS][i]=c
            c = c + 1
        rS += 1

        for i in range(rS , rE):
            matrix[i][cE - 1]=c
            c = c + 1 
        cE -= 1  
        # should go from cE - 1 not cE - cS - 1
        for i in range(cE-cS):
            matrix[rE - 1][cE - i - 1]=c
            c =c + 1
        rE -= 1  
        # similar here
        for i in range(rE-rS):
            matrix[rE - i -1][cS]=c
            c = c + 1
        cS += 1  
    return(matrix)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72217615

复制
相关文章
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
1.3K0
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
1.2K0
实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示。 先介绍一下矩阵的加法: 1 void Add(int rows, int cols) 2 { 3 for(int i= 0;i<rows;i++) 4 { 5 for(int j=0;j<cols;j++) 6 result[i][j]=mat1[i][j]+mat2[i][j]; 7 } 8 } 若两个矩阵要做乘法运:只有在一
猿人谷
2018/01/17
2.3K0
输入数字n然后输出0到n的全排列
给定一个正整数n, 则输出0到n的所有排列 输入:2 输出:012 021 102 120 201 210 代码: private static Set<String> result = new HashSet<String>(); public static void allSort(int number) { if (number < 0) { return; } String str=""; for (int i = 0;i <= number; i
用户6055494
2019/10/21
1.1K0
C语言 n*n矩阵求值及求逆矩阵[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129010.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
3.1K0
C语言 n*n矩阵求值及求逆矩阵[通俗易懂]
2022-03-16:给你一个整数 n ,表示有 n 个专家从 0 到 n -
2022-03-16:给你一个整数 n ,表示有 n 个专家从 0 到 n - 1 编号。
福大大架构师每日一题
2022/03/16
3090
2022-07-17:1、2、3...n-1、n、n、n+1、n+2... 在这个序列中,只有一个数字有重复(n)。 这个序列是无序的,找到重复数字n。 这个序
2022-07-17:1、2、3...n-1、n、n、n+1、n+2...在这个序列中,只有一个数字有重复(n)。这个序列是无序的,找到重复数字n。这个序列是有序的,找到重复数字n。答案2022-07-17:不能用哈希表。第一问,两种方法,快慢指针找环问题和异或法。第二问,二分法。代码用rust编写。代码如下:use rand::Rng;use std::collections::HashSet;fn main() { let nn: i32 = 10; let test_time: i32 =
福大大架构师每日一题
2022/07/17
8390
2022-07-17:1、2、3...n-1、n、n、n+1、n+2... 在这个序列中,只有一个数字有重复(n)。 这个序列是无序的,找到重复数字n。 这个序
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
上述语法中的 数据集 是 序列类型 , 该类型变量 用于存储一系列有序的元素 , 常见的序列类型有 :
韩曙亮
2023/10/11
2270
【Python】循环语句 ⑤ ( range 语句 | for 循环本质遍历序列 | 生成由 0 开始到 n 的序列 | 生成由 m 到 n 的序列 | 生成由 m 到 n 的步长为 k 的序列 )
2021-11-14:Fizz Buzz。给你一个整数 n ,找出从 1 到 n
2021-11-14:Fizz Buzz。给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answeri == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。answeri == "Fizz" 如果 i 是 3 的倍数。answeri == "Buzz" 如果 i 是 5 的倍数。answeri == i 如果上述条件全不满足。力扣412。
福大大架构师每日一题
2021/11/14
2640
打印1到最大的n位数
这道题是面试过可能会遇到的手写代码题。如n为3时,那么需要打印1到999。需要注意的是当输入的n很大时,最大的n位数是不能通过int或者long long int来表示,此时可以使用字符数组来存储。
恋喵大鲤鱼
2018/08/03
3750
常见算法的时间复杂度 Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…
说实话,我是真的不懂算法。但是,我知道一个算法的好坏,通常时间复杂度是一个评价的指标之一。
业余草
2019/06/20
8.6K0
2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络中,只有当 gr
2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示
福大大架构师每日一题
2023/06/21
2440
2023-06-10:给定一个由 n 个节点组成的网络,用 n x n 个邻接矩阵 graph 表示 在节点网络中,只有当 gr
3n+1
// The 3n+1 problem (3n+1 问题) // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 // Verdict: Accepted // Submission Date: 2011-05-22 // UVa Run Time: 0.032s // // 版权所有(C)2011,邱秋。metaphysis # yeah dot net。 // // [问题描述] // 考虑如下的序列生成算法:从整数 n
py3study
2020/01/09
4260
用Docker部署NextCloud到N1
只需要一个命令。 docker run -d -p 8888:80 --name nextcloud -v /data/nextcloud/:/var/www/html/ --restart=always --privileged=true arm64v8/nextcloud 如果是部署到U盘,可以这样。 docker run -d -p 8888:80 --name nextcloud -v **/srv/dev-disk-by-id-usb-WD_My_Passport_0820_5758
Erwin
2020/12/01
1.1K0
打印从1到最大的n位数
有一个数字n,我们需要按照顺序输出从1到最大的n位十进制数,例如:n = 3,则输出1、2、3...一直到最大的3位数999。
神奇的程序员
2022/04/10
6920
打印从1到最大的n位数
【iOS】修改checkra1n+chimera环境(chimera1n)
这样海外和已经有系统全局代理设置的朋友们就可以直接使用 brew 命令安装软件了。
zby1101
2020/08/05
1.4K0
java实现从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。
从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式 输入一个整数 n。 输出格式 每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。 对于没有选任何数的方案,输出空行。 本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。 数据范围 1≤n≤15 输入样例: 3 输出样例: 3 2 2 3 1 1 3 1 2 1 2 3 import java.util.Scanner; public cla
CaesarChang张旭
2021/03/08
1.5K0
Python|求1到n的阶乘之和
对于此题,我们可以用定义一个函数来解决,接着用一个for循环语句来设置从1到n,接下来一起来编写这个代码吧。
算法与编程之美
2020/11/11
3.3K0
Python|求1到n的阶乘之和
MapReduce:N keys,N files
MapReduce中,不管是map阶段还是reduce阶段,二者的输入和输出都是key,value类型的值。现在有个需求是根据map阶段返回值key的个数,生成相应个数的文件。也就说一个key写到一个文件中,每个文件只能包含一个key。
YG
2018/12/14
8240
MapReduce:N keys,N files(二)
如果你看了MapReduce:N keys,N files(一)这篇文章,并按其介绍的方法尝试去将N个key映射到N的文件中,你会发现分割后数据量比分割前的要多,并且有些文件不能正常读取。 用presto读取的话,可能会报这种错:
YG
2018/12/14
8060

相似问题

从n乘1到m×n矩阵

11

平方关系1:N

14

用螺旋形式填充n×n矩阵的C程序

310

如何将n*1矩阵转换为n*n对角矩阵

36

求螺旋矩阵中N个方格的坐标

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文