Backtrack---N Queen

pos=[0]*5
x=[0]*5

def place(t):
 for i in range(1,t):
  if (pos[i] == pos[t]):
   return False
  elif (abs(pos[i]-pos[t]) == abs(i-t)):
   return False
 return True

def Backtrack(t,n):
 if (t>n):
  print "get an answer"
  print pos
 else:
  for i in range(1, n+1):
   pos[t]=i
   if (place(t)):
    Backtrack(t+1, n)

def Queen(n):
  Backtrack(1,n)

Queen(4)

时间: 2024-12-28 11:55:26

Backtrack---N Queen的相关文章

N皇后问题(N queen‘s problem)

N 皇后问题是一个古老而著名的问题, 是回溯算法(back track)的典型案例.问题描述如下: N x N 的棋盘上放置N个皇后. 要求同一行中, 同一列中, 以及对角线上(包括正负对角线)只能有一个皇后, 否则就会发生clash的情况而失败. 问解决方案? 解决思路如下: (1)逐列扫描, 从最左边的列开始, 总共有N个queens. (2)如果所有的queens 都被安全放置了, 就返回true. (3)对于给定的列, 尝试所有的行, 此时行是变量, 注意此时此列的左边的所有的列都放置了

uva 11195 Another queen (用状态压缩解决N后问题)

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2136 Problem A Another n-Queen Problem I guess the n-queen problem is known by every person who has studied backtracking. In this problem you s

UESTC 75 The Queen's New Necklaces

题意:一个项链的珠子的颜色有若干种.每种颜色的珠子个数为Ai.求有多少种不同的项链? 我们考虑,如果旋转i个珠子,那么会产生gcd(n,i)个循环节,每个循环节的大小我们假设为K,那么如果有一个颜色的数量不是K的倍数,那么必然没有置换过后等价的情况,然而,如果全部都是K的倍数,那么我们就相当于在gcd(n,i)个空位里面,每种颜色放入a[i]/K个的方案总数,这是一个简单的组合计数问题,方法大概就是c(n,m1)*c(n-m1,m2)*c(n-m1-m2,m3)*... ...,然后还要再除以n

uva 10401 Injured Queen Problem(DP)

uva 10401 Injured Queen Problem 题目大意:这是一个变形的N皇后问题,皇后不再是占据一行一列以及斜线,她占据的只是她周围的一圈以及她所在的一列.题目给出一个含有问号,数字和字母的字符串.第i个字符是问号代表皇后在第i列的任意一行,若第i个字符是数字或字母X(1-F)代表皇后在第i列的X行.求满足该字符串的摆放方式的方法一共有几种. 解题思路:从第一列开始往后递推.dp[i][j]表示的是结合j - 1列的摆放方式,将皇后放在(i, j)的位置会有几种情况. #inc

ACM: Long Live the Queen - 树上的DP

Long Live the Queen Time Limit:250MS     Memory Limit:4096KB     64bit IO Format:%I64d & %I64u Description The Queen of Byteland is very loved by her people. In order to show her their love, the Bytelanders have decided to conquer a new country which

LeetcodeOJ: Restore IP Addresses backtrack暴搜

1 class Solution { 2 public: 3 vector<string> ret; 4 string src; 5 int len; 6 unordered_set<string> added; 7 vector<string> restoreIpAddresses(string s) { 8 if ( s.empty() ) return ret; 9 src = s; 10 len = src.size(); 11 backTrack(0,0, &

快速上手backtrack 5

一,     1.网络配置基本命令         (1)查看本地网卡:ifconfig -a    if(interface)    -a (all)          (2)激活网卡:ifconfig eth0 up/down    启用或者禁用网卡         (3)DHCP网络自动获取IP:dhclient eth0         (4)手动设置IP:ifconfig eth0 IP netmask 子网掩码  动态主机分配协议,必须启用DHCP才可以         (5)设置网

(省事选拔系列---团体赛)God Save the i-th Queen

God Save the i-th Queen Time Limit: 5000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Main Submit Status PID: 4299 Did you know that during the ACM-ICPC World Finals a big chessboard is installed every year and is avai

uva 11538 - Chess Queen(数论)

题目链接:uva 11538 - Chess Queen 题目大意:在一个n?m的棋盘上,放两个皇后,要求两个皇后可以互相攻击,求有多少种放法. 解题思路:因为皇后的攻击范围为竖线.横线和斜线,所以枚举每条上两个皇后放的位置,比如一条斜线有8个,那么放两个皇后的种数就有C(82)种. 行数n,每行m个位置C(m2)?n 列数m,每列n个位置C(n2)?m 斜线,2?(2?∑i=1n?1i?(i?1)+(m?n+1)?n?(n?1)),因为正斜线和翻斜线,所以要乘以2 最后公式化简为2?n?(n?