鱼C论坛

 找回密码
 立即注册
查看: 2125|回复: 3

新手求助,由内向外螺旋填数问题

[复制链接]
发表于 2019-12-26 12:32:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
heng = int(input('请输入行数:'))
zong = int(input('请输入列数:'))
he = heng * zong
b = [[0 for k in range(zong)]for k in range(heng)]
quan = 1
if heng > zong:
    xy = (zong-1)//2+1
else:
    xy = (heng - 1) // 2 + 1
for cc in range(xy):
    for i in range(quan-1, zong - quan + 1):
        if b[quan - 1][i - 1] + 1 > he:
            break
        else:
            b[quan - 1][i] = b[quan - 1][i - 1] + 1
    for i in range(quan, heng - (quan - 1)):
        if b[i - 1][zong - quan] + 1 > he:
            break
        else:
            b[i][zong - quan] = b[i - 1][zong - quan] + 1
    for i in range(zong - quan - 1, quan - 1 - 1, -1):
        if b[heng - quan][i + 1] + 1 > he:
            break
        else:
            b[heng - quan][i] = b[heng - quan][i + 1] + 1
    for i in range(heng - quan - 1, quan - 1, -1):#5-1
        if b[i + 1][quan - 1] + 1 > he:
            break
        else:
            b[i][quan - 1] = b[i + 1][quan - 1] + 1
    quan += 1

# for i in range(heng):
#     for ii in range(zong):
#         b[i][ii] = he + 1 - b[i][ii]

kk = 0
for k in b:
    for kkk in k:
        print(kkk, end='\t')
        kk += 1
        if kk == zong:
            print()
            kk = 0
这是自己写的螺选填数,要求再写一个由内向外的螺旋填数,必须从1开始螺旋,方向随意
目前只学到了循环 列表
摸不清思路  是否需要先找1的起始坐标  找了好久找不到规律
假设找到1的坐标怎么判断方向 或者固定一个方向螺旋
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-26 14:29:11 | 显示全部楼层
本帖最后由 阴阳神万物主 于 2019-12-26 14:30 编辑

可以先找到要填写的数据的最大值,然后由外而内从大到小填写。
这样的话,从形式上和 由内到外,从小到大 是一样的。
要学会灵活变通,正难则反。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-26 14:31:31 | 显示全部楼层
阴阳神万物主 发表于 2019-12-26 14:29
可以先找到要填写的数据的最大值,然后由外而内从大到小填写。
这样的话,从形式上和 由内到外,从小到大  ...

题目要求是必须从1开始向外螺旋...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-26 14:48:08 | 显示全部楼层
903221759 发表于 2019-12-26 14:31
题目要求是必须从1开始向外螺旋...

但是呢,想要确定内部 1 的位置,是很困难的事,尤其是计算机这种现阶段只懂二进制的家伙。
一个规模的矩形,1 的位置可以多达 4 种选择。并且,每种选择想要完美地螺旋成功,还需要看位置在哪里,还不是在哪一个角的问题,还有什么时候才能去绕更大的矩形 (什么时候才能突破边界),简直巨麻烦的。

@@@@@
@@@@@
@@@@@
@@@@@

@@@@
@@@@
@@@@
@@@@
@@@@


标红的,就是 1 的位置的选择。
从外到内就很好办,可以永远都是 (0,0) 开始,顺时针或者逆时针旋转向内,遇到边界直接转向。




小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-21 12:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表