《Cracking the Coding Interview》——第8章:面向对象设计——题目6

2014-04-23 22:57

题目:实现一个数据结构来表示拼图游戏中的碎片。

解法:一个拼图块儿有四条边,每边只有凹凸平三种情况,当两块碎片拼接的时候,分为四个方向进行,块儿上的图案肯定也是判断是否能拼接的依据之一。所以就有了以下的表示方法,又一题做得云里雾里。话说这种题目在面试时如果真遇到,得写到什么程度的代码才算及格?

代码:

 1 // 8.6 Design data structure to represent pieces in jigsaw puzzle. If possible please design an algorithm to solve it.
 2 // I'll use the struct below to represent a piece, which has four sides, each one of which is either concave, convex or plain.
 3 // And they must have some patterns on them, which can be considered as images.
 4 // Solving a jigsaw can be done with DFS, which can be O(n!) in time scale, where n is total number of pieces.
 5 // A possibl way is to do it in diagonal manner, starting from the left top corner.
 6 // Like this:
 7 // 0 1 2 3
 8 // 1 2 3 .
 9 // 2 3 ...
10 // 3 .....
11 // When doing the search, you have to check if a piece can be fit into a targetted position.
12 // a method fitsWith() will be used, parameters will included two pieces and a direction.
13 // For example, fitsWith(piece1, piece2, BOTTOM) means if piece2 fits on the bottom of piece1.
14 struct JigsawPuzzlePiece {
15     // left, top, right, bottom
16     // -1 for concave, +1 for convex, 0 for plain
17     int side[4];
18     Image *image;
19 };

 

转载于:https://www.cnblogs.com/zhuli19901106/p/3684272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值