USACO1.5.4 checker challenge
2011-03-24 21:05
393 查看
以前用pascal 写过的东西,这回是C++。明天去北校区给初中生讲N皇后,所以自己也熟悉一下呗!
/* ID: wangqia6 TASK: checker LANG: C++ */ #include <fstream> #include <cstring> using namespace std; const int NEED = 3; ifstream infile; ofstream outfile; int n,now = 0,rec[15]; bool leftarr[30],rightarr[30],verarr[30]; long ans = 0; void dfsa(int i) { if (i > n) { now++; for (int j = 1; j < n; j++) outfile << rec[j] << ' '; outfile << rec << endl; return; } for (int j = 1; j <= n; j++) if ( !verarr[j] && !leftarr[i + j] && !rightarr[i - j + n - 1]) { verarr[j] = true; leftarr[i + j] = true; rightarr[i - j + n - 1] = true; rec[i] = j; dfsa(i + 1); if (now == NEED) return; verarr[j] = false; leftarr[i + j] = false; rightarr[i - j + n - 1] = false; } return; } void worka() { memset(verarr,0,sizeof(verarr)); memset(leftarr,0,sizeof(leftarr)); memset(rightarr,0,sizeof(rightarr)); dfsa(1); return; } long lowbit(long x) { return x & -x; } void dfsb(int i, long verbit,long leftbit,long rightbit) { if (i > n) { ans++; return; } long k,tmp = verbit & leftbit & rightbit; while (tmp != 0) { k = lowbit(tmp); tmp -= k; verbit -= k; leftbit -= k; rightbit -= k; dfsb(i + 1,verbit,(leftbit << 1) + 1,(rightbit >> 1) + (1 << (n-1))); verbit += k; leftbit += k; rightbit += k; } return; } void workb() { dfsb(1,( 1 << n ) - 1,( 1 << n ) - 1,( 1 << n ) - 1); return; } int main() { infile.open("checker.in"); outfile.open("checker.out"); infile >> n; worka(); workb(); outfile << ans << endl; infile.close(); outfile.close(); return 0; }
相关文章推荐
- usaco 1.5.4 Checker Challenge
- USACO 1.5.4 Checker Challenge
- USACO 1.5.4 Checker Challenge 题解
- USACO1.5.4 checker challenge
- There are 常数s 和 常数s! Usaco 1.5.4 Checker Challenge
- USACO 1.5.4 Checker Challenge ———— DFS
- [USACO 1.5.4] Checker Challenge
- [USACO 1.5.4]checker(水题重做——位运算(lowbit的应用))
- USACO / Checker Challenge(位运算的搜索)
- USACO1.5 Checker Challenge(类n皇后问题)
- USACO Checker Challenge
- usaco Section 1.5 Checker Challenge 最慢0.162秒0.0+n皇后问题位运算版(C语言)
- usaco 1.5.4 checker
- usaco 1.5.4——checker
- USACO Checker Challenge 位运算
- USACO6.5.5 Checker Challenge( checker)
- USACO 1.5 Checker Challenge (DFS)
- USACO 1.5 Checker Challenge
- USACO 1.5 Checker Challenge (DFS + 剪枝)
- USACO Checker Challenge