UVA11846 找座位
1 #include<cstdlib> 2 #include<algorithm> 3 #include<iostream> 4 #include<cstdio> 5 #include<cstring> 6 using namespace std; 7 8 //写小组类(组长坐标,可能的位置) 9 //先循环确定各小组的可能位置数 10 //X操作: 确定位置数为一的小组,更新地图,更新位置数非一的小组。循环(位置数小于一则无解) 11 //当某次循环后所有小组位置数均大于一(进入dfs循环) 12 //两种操作1:假定一个小组位置,继续X操作 2:枚举所有小组位置可能的情况,判断是否冲突 13 //这里用第一个方法,第一个要回溯,map数组在函数中重建,这样不影响X操作对map数组的改变 14 15 struct xz 16 { 17 int x, y; 18 int n; 19 int ant; 20 int Nx[30], Ny[30], Tx[30], Ty[30];//形状和队长位置 21 }; 22 23 const int MAXN = 20; 24 int n, k, Map; 25 26 int map[20][20]; 27 xz XZ[30]; 28 29 void init(xz *qwe) 30 { 31 Map = 0; 32 memset(map,