Skip to content

Instantly share code, notes, and snippets.

@guoyoujin
Last active January 5, 2018 09:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guoyoujin/5be993d3bfc62efca61713023fffe33d to your computer and use it in GitHub Desktop.
Save guoyoujin/5be993d3bfc62efca61713023fffe33d to your computer and use it in GitHub Desktop.
关于物品叠加问题的思维方法
假设有一个九宫格表,格子里面有各种物品,有的格子上是空的,有的格子上的物品是同一种物品,只是数量不一,当你把格子的物品移动到别的格子上的时候,你该怎么做?
下面是代码逻辑的顺序,仅供参考
理想思路算法逻辑
1.如果目标格子上为空,则直接覆盖目标格子,并删除移动格子数据
2.如果种类相同,直接让目标格子数量加上移动格子的数量,并清空移动的格子上的数据
3.如果种类不相同,则互换格子上的数据即可
上面这种情况在正常情况下是完全没有问题,但是当移动格子和目标格子是同一个格子的时候你会发现,他是满足条件2的,这时候奇迹发生了,物品数量翻倍了,老天,假如一直这么移动的话,那不是逆天了。
正确做法应该是下面这种,当然这也只是我想到的一种问题,如果你也碰到这类问题,可以告知
1.如果被移动和目标格子是同一个格子,则不作处理(注意此处尤为重要)
2.如果目标格子上为空,则直接覆盖目标格子,并删除移动格子数据
3.如果种类相同,直接让目标格子数量加上移动格子的数量,并清空移动的格子上的数据
4.如果种类不相同,则互换格子上的数据即可
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment