点一下shfs没有解决的两个。
B:奇数阶魔方(II)
观察题目中出现的三个例子,可以发现1在正中间那个数的下方(由于都是奇数,所以总是存在中间位置的数),那么给你一个n,就可以确定1的位置,接着跟着数走,又会发现下一个数都出现在右下方,但是如果到了右边界就会回到最左边,到了最下边就会回到最上边,然后每走n步就会往下跳两格。规律出来了,我们就可以从1的位置依次将接下来的数填上,最后把数组输出就行了。
C:LC-Display
这个题目个人觉得挺有意思的,所以拉上了比赛。
我们可以把一个数看成 上、中上、中、中下、下 五个部分,其中上中下分别是三个横线,中上和中下是两个竖线(对于“8”来说),不同的数字都可以看成是线和空格的组合,于是可以将它们存放在数组里面,下标就对应着这个数,得到:
char
s1[]="- -- -----",
s2[][3]={"||"," |"," |"," |","||","| ","| "," |","||","||"},
s3[]=" ----- --",
s4[][3]={"||"," |","| "," |"," |"," |","||"," |","||"," |"},
s5[]="- -- -- --";
假设m是需要输出的段数,对于一个数x,输出也是分为五个部分:
1、输出一个空格,m个s1[x],一个空格,换行
2、输出s2[x][0],m个空格,s2[x][2],换行
3、s3同s1
4、s4同s2
5、s5同s1
n个数的话就在外圈加个for循环,然后注意格式,这题就搞定了。