Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
def solve_n_queens(N):
# Mảng đánh dấu các cột và đường chéo đã có quân Hậu
col = [False] * (N + 1)
diag1 = [False] * (2 * N + 1) # Đường chéo chính (i - j + N)
diag2 = [False] * (2 * N + 1) # Đường chéo phụ (i + j)
pos = [0] * (N + 1) # pos[i] = j: quân Hậu hàng i đặt tại cột j
solutions = []
def backtrack(i):
for j in range(1, N + 1):
if not col[j] and not diag1[i - j + N] and not diag2[i + j]:
# Đặt quân Hậu vào vị trí (i, j)
pos[i] = j
col[j] = diag1[i - j + N] = diag2[i + j] = True
if i == N:
# Đã đặt xong N quân Hậu
solutions.append(pos[1:].copy())
else:
backtrack(i + 1)
# Bỏ quân Hậu ra để thử vị trí khác (Quay lui)
col[j] = diag1[i - j + N] = diag2[i + j] = False
backtrack(1)
return solutions
# Main
if __name__ == "__main__":
N = int(input("Nhập N: "))
solutions = solve_n_queens(N)
if not solutions:
print(f"Không có cách đặt nào cho N = {N}")
else:
# a) Tìm MỘT cách đặt N quân Hậu
print(f"--- Câu a: Một cách đặt {N} quân Hậu ---")
print("Cột đặt quân Hậu từ hàng 1 đến hàng N:", solutions[0])
# b) Ghi TẤT CẢ các cách đặt vào tệp N_HAU.OUT
with open("N_HAU.OUT", "w", encoding="utf-8") as f:
f.write(f"Tổng số cách đặt: {len(solutions)}\n\n")
for idx, sol in enumerate(solutions, 1):
f.write(f"Cách {idx}: " + " ".join(map(str, sol)) + "\n")
print(f"\n--- Câu b: Đã ghi tất cả {len(solutions)} cách đặt vào tệp N_HAU.OUT ---")
Cô hiện tại đang có hơn 31000SP rùi!
uses crt;
var st:array[1..100]of string;
a,b,c:array[1..100]of real;
i,n:integer;
max:real;
begin
clrscr;
readln(n);
for i:=1 to n do readln(st[i],a[i],b[i],c[i]);
max=(a[1]+b[1]+c[1])/3;
for i:=1 to n do
if (max<(a[i]+b[i]+c[i])/3) then max:=(a[i]+b[i]+c[i])/3;
writeln(max:4:2);
readln;
end.
Đầu tiên chúng ta phải hiểu rằng, ngôn ngữ máy là các dãy bit, mỗi dãy bit chỉ bao gồm các số 0 và 1. Ví dụ: 00111010
- Chúng ta có thể thấy việc viết chương trình bằng ngôn ngữ máy, chỉ gồm những số 0 và 1 rất khó khăn và mất nhiều thời gian, công sức, cực kì khó nhớ và khó sử dụng. Do đó, để thuận tiện hơn, đơn giản, dễ hiểu hơn, các ngôn ngữ lập trình được ra đời nhằm phục vụ những mục đích đó.




???
??? ko hieu luon