【蘭橋杯ニシキヘビ】車の配置
これで完了です。書くのは簡単ではありませんが、成功したらフォローまたはいいねをお願いします。ありがとうございます〜
問題の説明
n*n チェス盤では、各グリッドに最大 1 つのルークが配置され、2 つのルークが互いに攻撃できないようにする必要があります。中間配置方法は何通りありますか (ルーク間に違いはありません)
1. リソースの制限
リソース制限
制限時間:1.0秒 メモリ制限:256.0MB
2. 入力形式
正の整数 n が含まれます
3. 出力形式
車を配置する方法の数を表す整数
4. スタイルの入出力
サンプル入力
2
サンプル出力
7
5. コードと分析
具体的な分析については、ここでは説明しませんので、コード内のメモを読んでください。
n = int(input())
result = 1
visited = [0] * n #记录这一行时候已经放置的棋子
def DFS(row,visited):
global result
if row >= n:
return
for i in range(n):
if visited[i] == 0:
visited[i] = 1
result += 1
DFS(row+1,visited) #该行放置了棋子,再找下一行
visited[i] = 0
DFS(row+1,visited) #不放棋子的情况
DFS(0,visited)
print(result)
結果:
自分で書いたので少し複雑ですが、少なくともこれで完了です。最適化がある場合は、コメント欄で議論してください。!