USACO 1.5 Checker Challenge (位操作)
来源:互联网 发布:mac hosts 修改 编辑:程序博客网 时间:2024/05/17 06:13
#include <stdio.h>#define DEBUG 1#define TESTCASES 8#define IN(x) ( (x) >= 1 && (x) <= size ? 1 : 0 )#define WITHIN(x, y) ( IN(x) && IN(y) ? 1 : 0 )int size;int allQueensPlacedState;int solution[14];int numOfSolutions;void printColumnsCanPlaceIn(int columnsCanPlaceIn){int i;for (i = size - 1; i >= 0; i--)printf("%d ", (columnsCanPlaceIn >> i) & 1 ? 1 : 0);printf("\n");}void placeQueen(int row, int columnState, int leftDiagonalState, int rightDiagonalState){if (columnState == allQueensPlacedState){numOfSolutions++;if (numOfSolutions < 4){int i;for (i = 1; i <= size; i++)printf("%d ", solution[i]);printf("\n");}}int columnsCanPlaceIn = allQueensPlacedState & ~(columnState | leftDiagonalState | rightDiagonalState);//printColumnsCanPlaceIn(columnsCanPlaceIn);while (columnsCanPlaceIn != 0){//取columnsCanPlaceIn最后边的1赋给columnToPlaceInint columnToPlaceIn;int i;for (i = 0; i < size; i++){if( ((1 << i) & columnsCanPlaceIn) != 0){columnToPlaceIn = 1 << i;if (numOfSolutions < 4)solution[row] = i + 1;break;}}columnsCanPlaceIn = columnsCanPlaceIn - columnToPlaceIn;placeQueen(row + 1, columnState + columnToPlaceIn, (leftDiagonalState + columnToPlaceIn) << 1, (rightDiagonalState + columnToPlaceIn) >> 1);}}int main(){#if DEBUGint testCase;for (testCase = 1; testCase <= TESTCASES; testCase++){char inputFileName[20] = "inputx.txt";inputFileName[5] = '1' + (testCase - 1);freopen(inputFileName, "r", stdin);printf("\n#%d\n", testCase);#endifscanf("%d", &size);allQueensPlacedState = (1 << size) - 1;numOfSolutions = 0;placeQueen(1, 0, 0, 0);printf("%d\n", numOfSolutions);#if DEBUG}#endifreturn 0;}
0 0
- USACO 1.5 Checker Challenge (位操作)
- USACO 1.5 Checker Challenge (checker)
- USACO Checker Challenge 位运算
- [usaco]1.5 Checker Challenge
- USACO 1.5.4 Checker Challenge (N皇后问题) 位操作解法
- USACO 1.5.4 Checker Challenge
- [USACO 1.5.4] Checker Challenge
- usaco 1.5.4 Checker Challenge
- USACO Section 1.5 Checker Challenge
- USACO Section 1.5 Checker Challenge
- USACO 1.5 Checker Challenge (DFS)
- USACO 1.4 Checker Challenge 位运算
- USACO section 1.5.4 Checker Challenge
- USACO section 1.5 Checker Challenge(dfs深搜)
- USACO 1.5 Checker Challenge (DFS + 剪枝)
- 【搜索】【USACO】Checker Challenge
- usaco Checker Challenge
- USACO:Checker Challenge
- J2EE——13个规范
- swift开发遇到的问题
- Neutron 深入探索之 OVS + GRE之完整网络流程
- Mac如何安装XAMPP
- Spring MVC 注解详解
- USACO 1.5 Checker Challenge (位操作)
- IOS UI画线
- 队列的C语言实现
- 多人协同开发注意事项
- 非常详细GC学习笔记
- Centos6 install ClamAV
- 180亿美元的三行代码
- 钻研精神以及逻辑
- 互联网大佬