dreamer面具被揭开,谁是winner,谁是loser? (转载)# Joke - 肚皮舞运动
C*Y
1 楼
2个半小时,要写出能run的code。题目大意是这样:
N个方块(N已知),每个方块的4条边用数字表示,只有数字相同的两条边才能相邻摆
放,。每次输入一个方块(不是一次性全给N个),有且仅有一个位置能摆放这个方块
,方块可以旋转(90,180,270度)。要求打印出拼好的图案(即所有方块的摆放位置
和旋转角度)。
我当时的想法是,用一个矩阵储存方块在图案中的位置和角度,一个链表储存图案的边
缘(逆时针地)。每输入一个方块,就拿它的4条边跟链表中的边逐个比较,找到了就
记下它的位置和角度,还要注意如果方块的边跟图案中超过1条的边相邻的话(直角的
位置),所有邻边必须相同。找到摆放位置后需要从链表中删除一些边和插入一些边。
即使是像我这个简单的思路,写出bug free的code来还是很费劲啊。哎。。
还有更快的算法和数据结构吗?
N个方块(N已知),每个方块的4条边用数字表示,只有数字相同的两条边才能相邻摆
放,。每次输入一个方块(不是一次性全给N个),有且仅有一个位置能摆放这个方块
,方块可以旋转(90,180,270度)。要求打印出拼好的图案(即所有方块的摆放位置
和旋转角度)。
我当时的想法是,用一个矩阵储存方块在图案中的位置和角度,一个链表储存图案的边
缘(逆时针地)。每输入一个方块,就拿它的4条边跟链表中的边逐个比较,找到了就
记下它的位置和角度,还要注意如果方块的边跟图案中超过1条的边相邻的话(直角的
位置),所有邻边必须相同。找到摆放位置后需要从链表中删除一些边和插入一些边。
即使是像我这个简单的思路,写出bug free的code来还是很费劲啊。哎。。
还有更快的算法和数据结构吗?