USACO 1.5 Checker Challenge (DFS)
2015-09-26 23:58
465 查看
#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 conflict[14][14]; int solution[14]; int numOfSolutions; int directionArray[4][2] = {{1, 1}, {-1, -1}, {-1, 1}, {1, -1}}; void printConflict(){ int i, j; for (i = 1; i <= size; i++) for (j = 1; j <= size; j++) printf("%d%c", conflict[i][j], j == size ? '\n' : ' '); printf("\n"); } void setConflict(int row, int column, int flag){ int i; for (i = 1; i <= size; i++) conflict[i][column] += flag; int directionIndex; for (directionIndex = 0; directionIndex < 4; directionIndex++){ int deltaX = directionArray[directionIndex][0]; int deltaY = directionArray[directionIndex][1]; int x = row + deltaX; int y = column + deltaY; while ( WITHIN(x, y) ){ conflict[x][y] += flag; x += deltaX; y += deltaY; } } } void dfs(int row){ //printConflict(); if (row > size){ if (++numOfSolutions < 4){ int i; for (i = 1; i <= size; i++) printf("%d%c", solution[i], i == size ? '\n' : ' '); } return; } int column; for (column = 1; column <= size; column++){ if (conflict[row][column] == 0){ setConflict(row, column, 1); solution[row] = column; dfs(row + 1); setConflict(row, column, -1); } } } int main(){ #if DEBUG int 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); #endif scanf("%d", &size); numOfSolutions = 0; dfs(1); printf("%d\n", numOfSolutions); #if DEBUG } #endif return 0; }
相关文章推荐
- PDF编辑工具 Foxit PDF Editor 1.5 Build 2911 下载
- prototype 1.5 & scriptaculous 1.6.1 学习笔记
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- c++递归实现n皇后问题代码(八皇后问题)
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- USACO 3.2.2:Stringsobits
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path