同方法,但是只过80%,不知道哪块出问题~可能是tmp为负没考虑