二、轮回矩阵(输入输出文件名:rect.in /rect.out)
阿长最近迷上了一种矩阵,他认为通过分析这种图形可以参悟人的生死轮回(狂汗。。。)。这个图形由1到n*n这些数字组成。n表示一个人的年龄。比如,当一个人的年龄为4的时候,那么对于他的轮回矩阵就是如下的一个图形:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
从左上角的1开始,以顺时针的方向进行旋涡式的伸展。这样的一个图形我们称它为4岁的轮回矩阵。为了更好的研究这些矩阵,阿长不得不再次求助于你,希望你能编写一个程序,当我们输入一个人的年龄的时候,你的程序能生成一个对于该年龄轮回矩阵。
输入:
一个数字n,表示年龄。对于30%的数据,n<=50,对于100%的数据,n<=500(汗,谁活了这么久。。。。)。
输出:
轮回矩阵的结构图。每行的数字之间用一个空格分开,注意每行最后一个数字后面不要留有空格。无须考虑数字的对齐问题。
样例输入1:
4
样例输出1:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
样例输入2:
10
样例输出2:
1 2 3 4 5 6 7 8 9 10
36 37 38 39 40 41 42 43 44 11
35 64 65 66 67 68 69 70 45 12
34 63 84 85 86 87 88 71 46 13
33 62 83 96 97 98 89 72 47 14
32 61 82 95 100 99 90 73 48 15
31 60 81 94 93 92 91 74 49 16
30 59 80 79 78 77 76 75 50 17
29 58 57 56 55 54 53 52 51 18
28 27 26 25 24 23 22 21 20 19
四、互不同构的平面图(输入输出文件名:graph.in / graph.out)
打工回来还得继续上学,最近学校开了一门叫做离散数学的课,很让阿长有点头疼。因为这几次的作业都要求画出指定结点数的所有非平面图,并使得没有两个图是同构的,而手工画图一不小心就很容易画丢了某副图,因此他想向擅长编程的求助,希望可以让程序为他画出所有的图(本题只要求给出邻接矩阵即可)。
输入:结点数n
输出:第一行输出所有符合条件的图的个数,从第二行起输出邻接矩阵,每两个图的矩阵之间空一行。
输入样例:5
输出样例:1
0 1 1 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0