Tôi muốn biết liệu có thể giải quyết vấn đề Josepheus bằng cách sử dụng danh sách trong python hay không."Josephus-problem" sử dụng danh sách trong python
Nói một cách đơn giản, vấn đề Josephus là tất cả về việc tìm kiếm một vị trí trong một sắp xếp tròn sẽ an toàn nếu thực thi được xử lý bằng cách sử dụng tham số bỏ qua được biết trước.
Ví dụ: được sắp xếp theo hình tròn như [1,2,3,4,5,6,7]
và thông số bỏ qua là 3, mọi người sẽ được thực hiện theo thứ tự là 3,6,2,7,5,1
và vị trí 4
sẽ là an toàn.
Tôi đã cố gắng giải quyết danh sách này bằng cách sử dụng một thời gian, nhưng các vị trí chỉ mục trở nên phức tạp để tôi xử lý.
a=[x for x in range(1,11)]
skip=2
step=2
while (len(a)!=1):
value=a[step-1]
a.remove(value)
n=len(a)
step=step+skip
large=max(a)
if step>=n:
diff=abs(large-value)
step=diff%skip
print a
Cập nhật câu hỏi với đoạn mã, nhưng tôi không nghĩ logic của tôi là đúng.
thuật toán này là tuyệt vời! Bạn có thể chia sẻ rằng làm thế nào bạn đã nghĩ ra 'idx = (idx + skip)% len (ls)'? Tôi biết nó hoạt động, nhưng tôi không có ý tưởng làm thế nào mọi người có thể tìm ra cách này. Cảm ơn bạn! –
@JayWong đó là cách tốt nhất để đi qua một mảng và quấn từ đầu đến đầu –