北航OJ 转圈圈问题
本题要求你输出一个尺寸为d×d的数阵,数字的排列方式是从1到n循环且顺时针转圈,看样例输出。 输入 两行,第一行是正整数n(n<10),第二行是正整数d(d<20) 输出 转圈圈的数阵 输入样例1 6 4 输出样例1 1 2 3 4 6 1 2 5 5 4 3 6 4 3 2 1 输入样例2 5 5 输出样例2 1 2 3 4 5 1 2 3 4 1 5 4 5 5 2 4 3 2 1 3 3 2 1 5 4 循环可以通过对数取模得到。矩阵可以用二维数组模拟。 麻烦在于模拟人转圈写数的过程,可以将每一圈看作一个循环。用一个变量n来标记写数的次数,当写数次数用尽时,循环结束。 奇数的情况下,正中间的最后一个数会出现问题,可以在最后加一个if语句进行完善。 这里用python实现。 a=int(input()) b=int(input()) c=[] n=b**2 x=b t=1 line=x # 生成n*n维数组 for i in range(b): c.append([]) for i in range(b): for j in range(b): c[i].append(0) while n: for j in range(2*x-b-1): c[b-x][j+b-x]=t n-=1 t+=1 for j in range(2*x-b-1): c[j+b-x][x-1]=t n-