最近老师让用程序解决八数码问题,当时注意到可以从中抽取出来的简单模型——三数码,就是4个格子三个数,然后用C++写了一个求解可达不可达且可达的话求出最少步长的简单算法:

/* 三数码问题求解 */
/* 找出数据结构和算法 */
/* 结合测试生成的测试用例方法以及代码优化方法 */
/* 注释 */
/* 证明程序的正确性 写测试代码 */
/* 比较复杂的话,会用到记忆结点 */
#include<iostream>
using namespace std;
int main() {int d[4] = {0};                    //初态 int des[4] = {0};                  //目标态 int flag[3] = {0},flag1[3] = {0},k,t,status;int t1[3],t2[3];  //存储初态和目标态各大于0的数的位置 int b1,b2;  //计算顺时针和逆时针的最小步数 cout<<"请输入三数码的值:"<<endl;cin>>d[0]>>d[1]>>d[2]>>d[3];cout<<"请输入目标值:"<<endl;cin>>des[0]>>des[1]>>des[2]>>des[3];/* 对初态和目标态做顺序统计 */k = 0;for(int i = 0;i < 4;i++){if(d[i] != 0){flag[k] = d[i];       //存储隐藏顺序 t1[k] = i;++k;}}k = 0;t = 0;for(int i = 0;i < 7;i++){if(k == 0 && des[i%4] != 0 && des[i%4] == d[k]){flag1[k] = des[i%4];t2[k] = i % 4; ++t;                 //统计从这里开始遇到的des[i]不为0的总量 ++k;}else if(k != 0 && des[i%4] != 0 && t < 3){flag1[k] = des[i%4];t2[k] = i % 4; ++t;++k;}else if(t == 3){break;}}/* 判断是否可达 */status = 0;k = 0;for(int i = 0;i < 4;i++){if(flag[i] != flag1[i]){cout<<"不可达!";k = 1;break;}}if(k == 0){cout<<"可达!";status = 1;}/* 测试代码 for(int i=0;i<3;i++){cout<<t1[i]<<" ";}cout<<endl;for(int i=0;i<3;i++){cout<<t2[i]<<" ";}cout<<endl; *//* 计算从初态到终态最少的步数 */k = 0;if(status == 1){/* 计算顺时针步数 */b1 = 0; for(int i=0;i<3;i++){if(t1[i]<=t2[i]){b1 = b1 + (t2[i] - t1[i]);}else{b1 = b1 + (3-t1[i]) + (t2[i] + 1);}}/* 计算逆时针步数 */b2 = 0;for(int i=0;i<3;i++){if(t1[i]<=t2[i]){b2 = b2 + t1[i] + 4 - t2[i];}else{b2 = b2 + t1[i] - t2[i];}}/* 比较顺时针最少步数和逆时针最少步数得出最少步数 */if(b1 <= b2){cout<<"最少步数为:"<<b1<<endl;} else {cout<<"最少步数为:"<<b2<<endl;}}return 0;
}

人工智能算法之三数码相关推荐

  1. 智源人工智能算法大赛开锣,百万奖金激励 AI 算法创新

    智源人工智能算法大赛现已正式启动!本次比赛由北京智源人工智能研究院主办,清华大学.北京大学.中科院计算所.旷视.知乎等协办,总奖金超过 100 万元,旨在以全球领先的科研数据集与算法竞赛为平台,选拔培 ...

  2. 开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素

    开源人工智能算法一种新颖的超像素采样网络深层特征来估计任务特定的超像素摘要: 超像素提供图像数据的有效低/中级表示,这极大地减少了后续视觉任务的图像基元的数量. 现有的超像素算法无法区分,因此难以集成 ...

  3. 重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性

    重磅MIT开源人工智能算法评估和理解对抗Logit配对的稳健性摘要:我们评估了对抗性Logit Pairing的稳健性,这是最近针对广告范例提出的防御措施. 我们发现,使用Adversarial Lo ...

  4. 标准发布丨央行发布《人工智能算法金融应用评价规范》

    2021-05-11 11:12:26 来源:中国人民银行 为全面提升人工智能技术在金融领域应用和管理水平,推动金融与科技深度融合协调发展,中国人民银行制定了<人工智能算法金融应用评价规范> ...

  5. 深思:外卖背后的人工智能算法揭秘

    知识积累带来规模递增,规模递增引发市场集中. 当一个行业可以以"流水线"的形式固定下来后,这个行业中,人的价值就被越来越弱化与微不足道,从身体.动作.时间.精力等,都被重复的机器与 ...

  6. 人工智能算法的可解释性方法研究

    来源:数学与人工智能 摘要 以深度学习为代表的人工智能技术在信息领域的应用,极大地提高了信息的利用效率和挖掘价值,深刻的影响了各领域的业务形态,同时也引发了监管部门和用户对这一新技术运用中出现的 &q ...

  7. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

  8. 速领:「人工智能算法从入门到精通教程」

    小伙伴从去年年底开始,一直叨叨要跳槽,大大小小的公司面试了很多,但总没有拿到一个满意的offer,要么package太低,要么就是面试被虐. 经过前几次的面试失利,终于明白了什么叫基础不牢,地动山摇. ...

  9. DL之FAN:基于人工智能算法偶像和明星渐变卡通形象

    DL之FAN:基于人工智能算法偶像和明星渐变卡通形象 目录 输出结果 算法设计 相关文章 Paper:<How far are we from solving the 2D & 3D F ...

最新文章

  1. 网络IO模型的深入浅出
  2. MySQL/ACCESS导出一句话拿WebShell后门命令
  3. 算法属于计算机服务还是软件,第06讲 服务器软件设计的算法和问题
  4. linux拷贝到新建文件夹命令行,Linux创建文件touch,复制文件cp,tab补全,链接文件ln命令...
  5. 从王者荣耀看设计模式(五.组合模式)
  6. caffe 实践程序3——caffe提取特征以及由模型test数据
  7. sap 新增科目表_在SAP中新建会计科目
  8. Android封装mkv,MKV制作封装
  9. java打印表格_如何在java中使用printf()打印出表格?
  10. 服务器存储的作用和用途,存储服务器有四大作用你都清楚吗?
  11. 快消品行业定制化多租户SaaS系统:提供个性化配置,加速快消品企业运转效率
  12. 深度学习-使用tensorflow实现猫狗识别
  13. cocos 中每个节点的visit与draw函数
  14. rsa 长密钥实现及测试
  15. window.postMessage - 前端跨域通信
  16. sdcc man阅读笔记(一)——sdcc 的介绍与安装
  17. 未来计算机职业规划怎么写,计算机职业生涯规划书3000范文
  18. Qt OpenGL(二十七)——Qt OpenGL 核心模式--EBO
  19. OpenCV人脸识别(1)原理介绍
  20. 1024程序员日你知道吗?

热门文章

  1. 【牛客网】 小白月赛16 D小阳买水果
  2. 托管配置文件格式不正确 error: unsupported rule type RULE-SET
  3. java kdj_基于java语言开发的个性化股票分析技术:随机指数(kdj).doc
  4. C#简单调用FMU ,进行仿真计算
  5. 子弹笔记(上)——基础知识介绍
  6. x2000 ffmpeg avcodec_send_packet
  7. 破解中国电信天翼宽带猫 贝尔e8-C光猫RG200O-CA_V1.1SP002超级密码获取、开启自动拨号和无线路由功能
  8. iso镜像文件怎么装系统图文操作
  9. 智慧路灯杆系统环境监测 5G智能灯杆网关的功能有哪些
  10. 游戏辅助制作核心----植物大战僵尸逆向之加速出僵尸(十)