Giả sử chúng ta có một số n. Chúng tôi sẽ kiểm tra xem đó có phải là một số Hạnh phúc hay không. Như chúng ta đã biết, số hạnh phúc là một số, trong đó bắt đầu bằng bất kỳ số nguyên dương nào thay thế số sau đó bằng tổng bình phương các chữ số của nó, quá trình này sẽ được lặp lại cho đến khi nó trở thành 1, nếu không nó sẽ lặp lại liên tục trong một chu kỳ. Những số đó, khi số 1 được tìm thấy, chúng sẽ là số hoạt động.
Vì vậy, đầu vào giống như 19, đầu ra sẽ đúng như con số hạnh phúc. Như chúng ta có thể thấy từ ngày 19, chúng ta sẽ nhận được
1 2 + 9 2 =82
8 2 + 2 2 =68
6 2 + 8 2 =100
1 2 + 0 2 + 0 2 =1
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Ở đây, chúng tôi sẽ sử dụng phương pháp lập trình động và giải quyết vấn đề này bằng cách sử dụng đệ quy
- Trường hợp cơ sở là, khi n =1, thì trả về true
- Khi n đã được truy cập, hãy trả về false
- đánh dấu n là đã ghé thăm
- n:=n dưới dạng chuỗi, l:=danh sách tất cả các chữ số trong n
- temp:=tổng bình phương của tất cả các chữ số
- hàm trả về một cách đệ quy với tham số tạm thời và danh sách đã truy cập
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution(object): def isHappy(self, n): return self.solve(n,{}) def solve(self,n,visited): if n == 1: return True if n in visited: return False visited[n]= 1 n = str(n) l = list(n) l = list(map(int,l)) temp = 0 for i in l: temp += (i**2) return self.solve(temp,visited) ob = Solution() print(ob.isHappy(19))
Đầu vào
19
Đầu ra
True