啊哈C语言答案,啊哈c语言开头的题,哪位大佬来试试?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#define null NULL
#define enter putchar(10)
#define space putchar(32)
#define rg(i, a, b, s) for(auto i = a; (b > a)?(i < b):(i > b); i += s)
#define INF USHRT_MAX
#define END LONG_LONG_MIN
#define var_name(x) #x
#define print_container(c) printf("Elements in container %s: \n", var_name(c)); for(auto x: c) {cout << to_string(x) << endl;}
using namespace std;
typedef long long ll;
typedef unsigned short int usi;
typedef unsigned int ui;
inline string to_string(string _s){
return(_s);
}
template
string to_string(pair p){
string _r = "
_r += to_string(p.first);
_r += ", ";
_r += to_string(p.second);
_r += ">";
return(_r);
}
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
usi sum = 0;
usi Matrix[9][9] = {0};
size_t _Hash(const pair &p){
return(2 * pow(p.first, 2) + 3 * pow(p.second, 3));
}
/*初始化时的点坐标集合*/
unordered_set, decltype(&_Hash)> s(0, _Hash);
/*后续填入的点坐标集合*/
unordered_set, decltype(&_Hash)> has_filled(0, _Hash);
ll num_of_solutions = 0;
inline void insert_pair(usi a, usi b){
s.insert(make_pair(a, b));
}
void Initiation(){
Matrix[5][2] = Matrix[0][8] = 1;
insert_pair(5, 2);
insert_pair(0, 8);
Matrix[0][5] = Matrix[4][1] = Matrix[1][8] = 2;
insert_pair(0, 5);
insert_pair(4, 1);
insert_pair(1, 8);
Matrix[6][0] = 3;
insert_pair(6, 0);
Matrix[2][6] = Matrix[5][5] = 4;
insert_pair(2, 6);
insert_pair(5, 5);
Matrix[8][1] = Matrix[7][6] = 5;
insert_pair(8, 1);
insert_pair(7, 6);
Matrix[3][0] = Matrix[1][4] = Matrix[6][1] = 6;
insert_pair(3, 0);
insert_pair(1, 4);
insert_pair(6, 1);
Matrix[7][2] = Matrix[8][5] = Matrix[5][3] = 7;
insert_pair(7, 2);
insert_pair(8, 5);
insert_pair(5, 3);
Matrix[3][4] = Matrix[8][8] = 8;
insert_pair(3, 4);
insert_pair(8, 8);
Matrix[0][1] = Matrix[8][0] = 9;
insert_pair(0, 1);
insert_pair(8, 0);
}
inline void print_matrix(){
rg(i, 0, 9, 1){
rg(j, 0, 9, 1){
if(s.find(make_pair(i, j)) != s.end()){
SetConsoleTextAttribute(handle, FOREGROUND_RED);
}else{
SetConsoleTextAttribute(handle, FOREGROUND_GREEN);
}
printf("%hu", Matrix[i][j]);
if(j < 8){
space;
}
}
enter;
}
SetConsoleTextAttribute(handle, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
}
/*获取a行b列位置的度,返回的是这个位置“附近”的数字集合,度就是该集合的size,显然在这个位置填入的数字不能在此集合中*/
inline unordered_set get_cnt(usi a, usi b){
unordered_set _s;
rg(i, a / 3 * 3, (a + 3) / 3 * 3, 1){
rg(j, b / 3 * 3, (b + 3) / 3 * 3, 1){
if(Matrix[i][j] != 0){
_s.insert(Matrix[i][j]);
}
}
}
rg(i, 0, 9, 1){
if(Matrix[a][i] != 0){
_s.insert(Matrix[a][i]);
}
if(Matrix[i][b] != 0){
_s.insert(Matrix[i][b]);
}
}
return(_s);
}
void do_fill(){
if(sum == 81 - s.size()){
printf("第%lld组解:\n", ++num_of_solutions);
print_matrix();
system("pause");
return;
}
/*index表示接下来找到的度最大(或之一)的位置坐标*/
pair index;
unordered_set t;
usi max_cnt = 0;
rg(i, 0, 9, 1){
rg(j, 0, 9, 1){
if(has_filled.find(make_pair(i, j)) != has_filled.end() || s.find(make_pair(i, j)) != s.end()){
continue;
}
unordered_set _t = get_cnt(i, j);
if(_t.size() > max_cnt){
max_cnt = _t.size();
index.first = i;
index.second = j;
t = _t;
}
}
}
//printf("row: %hu, column: %hu\n", index.first, index.second);
//print_container(t);
rg(i, 0, 9, 1){
/*剪枝:在集合t中的数或者与此位置同行同列,或者在同一3*3区域内,不在此集合中的数可被选填*/
if(t.find(i + 1) == t.end()){
Matrix[index.first][index.second] = i + 1;
sum++;
has_filled.insert(index);
do_fill();
/*加上break就没有回溯搜索,只使用贪心策略求出一组解*/
//break;
Matrix[index.first][index.second] = 0;
sum--;
has_filled.erase(index);
}
}
}
int main(){
Initiation();
//print_container(s);
do_fill();
return 0;
}
啊哈C语言答案,啊哈c语言开头的题,哪位大佬来试试?相关推荐
- c语言答案知码,C语言笔试习题集答案和解析.doc
C语言笔试习题集答案和解析 C语言基础知识 一,选择题 1 答案是A A正确 B {}可以作为复合语句的标志 C main 函数不是用户命名的 D 分号是语句结束的标志,肯定是语句的一部分 做这个题目 ...
- 知到山东理工c语言答案,山东理工大学C语言实验.doc
山东理工大学C语言实验 山东理工大学 C语言实验指导[答案] 实验一? 顺序结构程序设计(2学时) //姓名:*** //班级:*** //学号:*** //参考测试数据:输入:0 0 180 输出: ...
- 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...
全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...
- 2019上海理工大学c语言答案,上海理工大学C语言实验7答案.doc
上海理工大学C语言实验7答案.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 实验7 字符数组和字符串参考答案[DIY]1. ...
- 兰大网络教育c语言答案,兰大《C语言程序设计》9月在线考核试题答案
[2-i]);0 d8 v% r$ e7 X) f# N; ]: x A.1 5 90 o( c" r/ I3 p( E( c" o) h$ b) n B.1 4 71 m5 }. ...
- 湖南科技学院C语言答案,湖南科技大学C语言期末考试习题库.doc
湖南科技大学C语言期末考试习题库 志伟分享 左凯小编 PAGE \* MERGEFORMAT3 选择题(共 题),成绩() 1.C语言所提供的基本数据类型包括字符型.整型.双精度型.单精度型和____ ...
- 石油大c语言答案,中国石油大学C语言上机题答案(2013版)答案 最全最详细
由2012级学霸学长期末复习整理,包含所有2012级c语言上机题题目级及答案.比网上的2012版更新!!! 中国石油大学c语言上机题答案大全(2013版) 最全最详细 1.1 Hello world. ...
- 尔雅c语言答案,数据结构(C语言版)_尔雅_章节满分答案
数据结构(C语言版)_尔雅_章节满分答案 更多相关问题 根据下面内容,回答下列各题: 某组织拟按GB/T19001标准建立质量管理体系并申请认证.在进行质量管 求插入纯水的氢电极与标准氢电极所组成的原 ...
- c语言答案填空选择,C语言试题配答案
第I卷 选择题(共50分) 一.选择题(共25题,每题2分,共50分) 1. 以下正确的C语言常量是( ) A.0789 B.2e2.4 C.'abd' D.'\t' 2. 下列变量定义中合法的是( ...
- 石油大c语言答案,中国石油大学C语言答案
int main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; fun(w,a); ...
最新文章
- 青源Forum | 人工智能的数理基础前沿系列报告 · 第 3 期
- netty源码分析之一:server的启动
- 万维网发布服务 w3svc 已停止 除非万维_万维网和互联网的区别
- Python 3实现k-邻近算法以及 iris 数据集分类应用
- 请谈下Android消息机制,复习指南
- puppet php,puppet入门实践
- 基于GitHub创建自己的个人网站
- 快速搭建一个Express工程骨架
- HDU 6034 - Balala Power! | 2017 Multi-University Training Contest 1
- asp.net mvc 压缩html代码,浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能
- iOS category解析
- sir节点matlab模型,SIR模型实现(matlab)
- 过程工业中的smartLink HART-IP
- PS-给文字填充图片纹理
- 国产芯片传来好消息,纯国产CPU测试数据“曝光”
- 汉诺塔问题解法心路历程及C语言学习请教
- 普通人的2022春招总结(阿里、腾讯offer)
- MATLAB 矩阵处理及多项式计算
- 罗振宇2022“时间的朋友”跨年演讲全文稿(pdf)
- ad 卡尔曼_理解卡尔曼五个方程
热门文章
- Win10下安装Intel Visual Fortran2019具体步骤及初始调试过程。
- 微信开发之JSSDK权限配置,服务器端获取签名等参数(java实现)
- Flash MX本地保存数据的三种方法
- html网页设计期末大作业——绿色的化妆品网页设计(5页) 网页设计作业模板 学生网页制作源代码下载
- AJAX框架都有哪些是常用的
- 使用eclipse开发可视化界面windowsbuilder
- 清除计算机用户缓存,如何在Windows 7中清除内存缓存,释放电脑空间?
- 冲击波病毒简介及解决方法
- APP设计~切图那些事儿
- Android Verified Boot