其实算法很简单,就是穷举加剪枝。

从(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相关推荐

  1. 穷举法解百马百担问题

    2021 03 30 //7 - 17 循环结构17:穷举法解百马百担问题(10 分) //有100匹马驮100担货,已知1匹大马驮3担 //1匹中马驮2担,2匹小马驮1担,问大中小马各几匹 //输出 ...

  2. java穷举法解方程_枚举法(穷举法)_Java语言程

    枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...

  3. 穷举法解八皇后问题和凑硬币问题

    八皇后问题 (英文:Eight queens),是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例. 问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意 ...

  4. 【算法】最直接的算法——穷举法详解

    第三章 穷举法 一.基本概念 穷举法又称为枚举法或者蛮力法,是一种简单直接解决问题的方法,常常是基于问题的直接描述去编写程序,比如说求n的阶乘,那么就直接一个循环n次的for循环. 穷举法依赖的基本技 ...

  5. 算法设计思想(1)— 穷举法

    本文系 王晓华 老师 GitChat [算法应该怎么玩]课程笔记. 1. 穷举法概念 穷举法又称穷举搜索法,是一种在问题域的解空间中对所有可能的解穷举搜索,并根据条件选择最优解的方法的总称. 数学上也 ...

  6. 《数据科学家养成手册》第十一章------算法学1(穷举,分治,回溯,贪心,迭代)

    1.对于计算机学科的人员,无论是怎么样子的工作都是需要了解算法的-----从而获得解决日常问题的基本的思路 2.计算机底层的数理计算逻辑仍然是"与""或"&qu ...

  7. 从LeetCode 679. 24 Game--C++ 解法--二十四点 到穷举24点所有可能性-24点大全

    从LeetCode 679. 24 Game–C++ 解法–二十四点 到穷举24点所有可能性 此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题 ...

  8. C#跳转语句 迭代法 穷举法

    一.跳转语句 break & continue break:跳出循环,终止此循环,不管下面还有多少次,全部跳过. string a=" ",for (int i=1;i&l ...

  9. 【最优化方法】穷举法 vs. 爬山法 vs. 模拟退火算法 vs. 遗传算法 vs. 蚁群算法

    一. 穷举法 列举所有可能,然后一个个去,得到最优的结果.如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解).这种算法得到的最优解肯定是最好的,但也是效率最低的.穷举法虽然能得到最好的最优 ...

最新文章

  1. 使用JavaScript调用aspx后台代码
  2. 手持gps坐标转换参数求解方法及在excel中的实现_怎么在GIS office 软件中批量导入坐标点位...
  3. 光纤收发器让网络布线变的更方便
  4. “等等党”的春天到了?高端显卡暴降35% 华强北商家:还会继续降
  5. html css 怎么使img和a标签在一个行内元素中间对齐
  6. 数字温度传感器DS18B20的数据手册理解
  7. 能测试经纬度的软件,经纬度转换工具(适用多种测试软件)
  8. python优化网站_小旋风网站优化 - 致力于Python高品质站群系统的产品研发
  9. python就业班-淘宝-目录.txt
  10. 礼物帮手项目(3) - 传id跳转详情页(尝试2种方法)
  11. 众昂矿业助力萤石氟化工产业链破竹般发展
  12. Go组队学习 9.异常处理
  13. 图文详情展示html,图文展示新闻网站模板
  14. 微信小程序网络字体安卓实机无法加载解决方案
  15. C++我记得应该是当初笔试面试常考的
  16. eclipse安装SVN三种方法
  17. Mathcad Prime教程-solve解方程组
  18. fractal php,一文读懂Fractal共识协议:iChing之精妙
  19. BaaS让你快速开发APP,和服务端说再见
  20. 可视对讲终端 平安城市智慧灯杆一键可视对讲

热门文章

  1. mlf机器人无限制格斗_2017MLF 无限制机器人格斗职业联赛广州火热开战
  2. sql中的未明确定义列
  3. 【合集】支付宝春节红包背后的那些事——集五福,咻红包
  4. android js调试工具,鬼鬼JS调试工具
  5. C\C++ 日志记录
  6. 2-STM32+Air724UG基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定Air724,并通过MQTT和模组实现远程通信控制
  7. 计算机教育学术交流会
  8. Python列表及其基本的操作(增删改查)
  9. 什么是 Web 3.0?(新手入门指南)
  10. k8s rest接口调用实例