仅供参考,有更好的思路可以修改