九宫格穷举所有解——九宫Killer
其实算法很简单,就是穷举加剪枝。
从(0,0)开始推演,当一个格子占据一种状态后将与之关联的系统中的一种状态删去,每个格点只能在剩下的状态中选取值。但这种算法有点慢且我们永远都等不到程序运行完,而且想把所有解都储存下来至少个人电脑是不可能的。就当好玩吧。
另外把文件指针放在外部打开可以提高程序运行速度。
#include<bits/stdc++.h>
using namespace std;
FILE *fp=fopen("jiugongkiller.txt","a");
int heng[9][9]={0},shu[9][9]={0},fang[9][9]={0},mx[9][9]={0},ct=0;
int wf(int x,int y)
{if(x>=0&&x<=2){if(y>=0&&y<=2)return(0);if(y>=3&&y<=5)return(1);if(y>=6&&y<=8)return(2); }if(x>=3&&x<=5){if(y>=0&&y<=2)return(3);if(y>=3&&y<=5)return(4);if(y>=6&&y<=8)return(5); }if(x>=6&&x<=8){if(y>=0&&y<=2)return(6);if(y>=3&&y<=5)return(7);if(y>=6&&y<=8)return(8); }
}
void print()
{ct++;fprintf(fp,"\n");for(int x=0;x<9;x++){for(int y=0;y<9;y++){fprintf(fp,"%d ",mx[x][y]);}fprintf(fp,"\n");}fprintf(fp,"\n");
}
void killer(int x,int y)
{for(int a=0;a<9;a++){if(fang[wf(x,y)][a]==0&&heng[x][a]==0&&shu[y][a]==0){fang[wf(x,y)][a]=heng[x][a]=shu[y][a]=1;mx[x][y]=a+1;if(x==8&&y==8){print();}else if(y==8){killer(x+1,0);}else{killer(x,y+1); }fang[wf(x,y)][a]=heng[x][a]=shu[y][a]=0;}}
}
int main(void)
{killer(0,0);fprintf(fp,"%d",ct);}
九宫格穷举所有解——九宫Killer相关推荐
- 穷举法解百马百担问题
2021 03 30 //7 - 17 循环结构17:穷举法解百马百担问题(10 分) //有100匹马驮100担货,已知1匹大马驮3担 //1匹中马驮2担,2匹小马驮1担,问大中小马各几匹 //输出 ...
- java穷举法解方程_枚举法(穷举法)_Java语言程
枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...
- 穷举法解八皇后问题和凑硬币问题
八皇后问题 (英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例. 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意 ...
- 【算法】最直接的算法——穷举法详解
第三章 穷举法 一.基本概念 穷举法又称为枚举法或者蛮力法,是一种简单直接解决问题的方法,常常是基于问题的直接描述去编写程序,比如说求n的阶乘,那么就直接一个循环n次的for循环. 穷举法依赖的基本技 ...
- 算法设计思想(1)— 穷举法
本文系 王晓华 老师 GitChat [算法应该怎么玩]课程笔记. 1. 穷举法概念 穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称. 数学上也 ...
- 《数据科学家养成手册》第十一章------算法学1(穷举,分治,回溯,贪心,迭代)
1.对于计算机学科的人员,无论是怎么样子的工作都是需要了解算法的-----从而获得解决日常问题的基本的思路 2.计算机底层的数理计算逻辑仍然是"与""或"&qu ...
- 从LeetCode 679. 24 Game--C++ 解法--二十四点 到穷举24点所有可能性-24点大全
从LeetCode 679. 24 Game–C++ 解法–二十四点 到穷举24点所有可能性 此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题 ...
- C#跳转语句 迭代法 穷举法
一.跳转语句 break & continue break:跳出循环,终止此循环,不管下面还有多少次,全部跳过. string a=" ",for (int i=1;i&l ...
- 【最优化方法】穷举法 vs. 爬山法 vs. 模拟退火算法 vs. 遗传算法 vs. 蚁群算法
一. 穷举法 列举所有可能,然后一个个去,得到最优的结果.如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解).这种算法得到的最优解肯定是最好的,但也是效率最低的.穷举法虽然能得到最好的最优 ...
最新文章
- 使用JavaScript调用aspx后台代码
- 手持gps坐标转换参数求解方法及在excel中的实现_怎么在GIS office 软件中批量导入坐标点位...
- 光纤收发器让网络布线变的更方便
- “等等党”的春天到了?高端显卡暴降35% 华强北商家:还会继续降
- html css 怎么使img和a标签在一个行内元素中间对齐
- 数字温度传感器DS18B20的数据手册理解
- 能测试经纬度的软件,经纬度转换工具(适用多种测试软件)
- python优化网站_小旋风网站优化 - 致力于Python高品质站群系统的产品研发
- python就业班-淘宝-目录.txt
- 礼物帮手项目(3) - 传id跳转详情页(尝试2种方法)
- 众昂矿业助力萤石氟化工产业链破竹般发展
- Go组队学习 9.异常处理
- 图文详情展示html,图文展示新闻网站模板
- 微信小程序网络字体安卓实机无法加载解决方案
- C++我记得应该是当初笔试面试常考的
- eclipse安装SVN三种方法
- Mathcad Prime教程-solve解方程组
- fractal php,一文读懂Fractal共识协议:iChing之精妙
- BaaS让你快速开发APP,和服务端说再见
- 可视对讲终端 平安城市智慧灯杆一键可视对讲
热门文章
- mlf机器人无限制格斗_2017MLF 无限制机器人格斗职业联赛广州火热开战
- sql中的未明确定义列
- 【合集】支付宝春节红包背后的那些事——集五福,咻红包
- android js调试工具,鬼鬼JS调试工具
- C\C++ 日志记录
- 2-STM32+Air724UG基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定Air724,并通过MQTT和模组实现远程通信控制
- 计算机教育学术交流会
- Python列表及其基本的操作(增删改查)
- 什么是 Web 3.0?(新手入门指南)
- k8s rest接口调用实例