摘要: http://poj.org/problem?id=3076POJ 3076 Sudoku求解规模为16*16的数独问题,还是数独,呵呵,直接改了上题的代码就是了。。所以也不废话了,嘿嘿。。。#include#includeconst int MAX_COLOUMN = 16*16+16*16+16*16+16*16+2;//最多出现列数const int MAX_ROW = 16*16*16+2;//最多出现的列数int cnt[MAX_COLOUMN];//cnt[i]统计第i列1的个数int most,coloumn;bool ans[MAX_ROW];//ans存放最终选中的行//跳舞 阅读全文
posted @ 2011-02-24 21:29 AndreMouche 阅读(667) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2676POJ 2676 Sudoku也是求解规模为9*9的数独问题,与POJ 3074 Sudoku相同的问题,只是修改了输入输出格式而已。。。所以也不废话了,嘿嘿。。。#include#includeconst int MAX_COLOUMN = 81+9*9+9*9+9*9+2;//最多出现列数const int MAX_ROW = 81*9+2;//最多出现的列数int cnt[MAX_COLOUMN];//cnt[i]统计第i列1的个数int most,coloumn;bool ans[MAX_ROW];//ans存放最终选中的行/ 阅读全文
posted @ 2011-02-24 20:51 AndreMouche 阅读(549) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3074POJ 3074 Sudoku大意:求解规模为9*9的数独问题分析:对于每一行,每一列,每一宫,数字1,2。。。9都需出现1次且只能是一次,可转化为精确覆盖问题,用跳舞链解决建模型:行数为9*9*9,数独中,第i行j列放数字k的状态存储在图中第(i*9+j)*9+k行中列数为9*9+9*9+9*9+9*9,其中第一个9*9代表第i格是否已填满,用第二个9*9确保每行的数字唯一且均出现一次第三个9*9确保每列的数字唯一且出现一次第四个9*9确保每宫的数字唯一出现1次#include#includeconst int MAX_COLOUM 阅读全文
posted @ 2011-02-24 20:35 AndreMouche 阅读(1077) 评论(0) 推荐(0) 编辑