K
Khách

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.

30 tháng 8

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 ---")

25 tháng 5 2021

12

11 tháng 5 2021

a) Máy tính sẽ thực hiện 6 vòng lặp

t=0; j=30

11 tháng 5 2021

b) 

uses crt;

var j,t:integer;

begin

t:=105; 

j:=0;

while t>=20 do

begin

j:=j+5;

t:=t-j;

end;

writeln(t);

writeln(j);

readln;

end.

14 tháng 3 2017

Uses Crt;
Var A : Array [1..100] Of Integer ;
i , j , n , T : Integer ;

BEGIN
Clrscr ;
Write(' Do dai cua day so N = ') ; Readln (N) ;
Writeln (' Nhap day so : ') ;
For i := 1 To N Do
Begin
Write('A[', i ,'] = ') ; Readln ( A ) ;
End ;
i := 1 ;
While (i <= n-1) Do
Begin
j := i+1;
While j<=n do
Begin
If A[j] < A then
Begin
T := A[j];
A[j ] := A;
A := T ;
End ;
j := j + 1;
End ;
i := i + 1;
End ;
Writeln(' Day sau khi sap xep : ') ;
For i := 1 To N Do Write(A : 4) ;
Readln ;
END .

14 tháng 3 2017

dài VL

5 tháng 8 2017

Bài 9. Làm việc với dãy sốBài 9. Làm việc với dãy sốBài 9. Làm việc với dãy số

5 tháng 8 2017

không phải cách tối ưu không thì hông biết nhưng mà ra đáp án :)) là được nhỉ

11 tháng 5 2017

Program tính_chia;

Uses crt;

Var i, n, s, a: integer;

Begin

Write('Nhap so n: '); readln(n);

s:=1;

For i:=1 to n do s:=s*i;

a:=0;

For i:=1 to n do a:=a+i;

Writeln('Ket qua phep tinh chia bang: ', s/a :10:2);

readln;

End.

17 tháng 7 2025

Ok aaa

16 tháng 3 2017

2/ program bt;

var N,i:integer;

begin

write('nhap so N'); readln(N);

writeln;

writeln (' bang nhan ', N);

writeln;

for i:=1 to 10 do writeln(N,'x',1:2,'= ', N*1;3); end

readln

end.

Mik chỉ bít làm bài 2 thôi!

18 tháng 3 2017

program loc_so_le;

uses crt;

var N,y: longint;

begin

Writeln('Nhap so N '); Readln(N);

for y:=1 to N do if (y mod 2) <>0 then Writeln (y,' la so le');

Readln;

end.