收藏 分销(赏)

人工智能实验报告大全.doc

上传人:天**** 文档编号:4375070 上传时间:2024-09-14 格式:DOC 页数:100 大小:1.08MB 下载积分:18 金币
下载 相关 举报
人工智能实验报告大全.doc_第1页
第1页 / 共100页
人工智能实验报告大全.doc_第2页
第2页 / 共100页


点击查看更多>>
资源描述
人工智能课内实验报告 (8次) 学  院:  自动化学院       班    级:  智能1501       姓 名:  刘少鹏(34)   学  号:            目 录 课内实验1:猴子摘香蕉问题得VC编程实现……………………1 课内实验2:编程实现简单动物识别系统得知识表示………5 课内实验3:盲目搜索求解8数码问题………………………18 课内实验4:回溯算法求解四皇后问题………………………33 课内实验5:编程实现一字棋游戏……………………………37 课内实验6:字句集消解实验…………………………………46 课内实验7:简单动物识别系统得产生式推理………………66 课内实验8:编程实现D-S证据推理算法……………………78 人工智能课内实验报告 实验1:猴子摘香蕉问题得VC编程实现 学 院:   自动化学院   班  级: 智能1501      姓 名: 刘少鹏 (33)   学 号:   06153034     日   期: 2017—3—8 10:15-12:00 实验1:猴子摘香蕉问题得VC编程实现 一、 实验目得 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中得经典例子—-猴子摘香蕉问题得编程实现. 二、编程环境 VC语言 三、 问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方得天花板上有一串香蕉,猴子想吃,但摘不到。房间得b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题得求解过程。 图1  猴子摘香蕉问题 四、 源代码 #include〈stdio、h〉 unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) { ﻩ     printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子得位置,y为箱子得位置 } void Monkey_Move_Box(char x, char y) {    printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子得位置,y为香蕉得位置 } void Monkey_On_Box() {     printf(”Step %d:monkey爬上箱子\n", ++i); } void Monkey_Get_Banana() {   printf(”Step %d:monkey摘到香蕉\n", ++i); } void main() { ﻩ    unsigned char  Monkey, Box, Banana; ﻩ printf(”********智能1501班**********\n");   printf(”********06153034************\n”); ﻩ    printf(”********刘少鹏**************\n"); ﻩ printf("请用a b c来表示猴子箱子香蕉得位置\n"); ﻩ    printf(”Monkey\tbox\tbanana\n”); scanf(”%c”, &Monkey); ﻩ    getchar(); ﻩ  printf(”\t”); scanf(”%c", &Box); getchar(); ﻩ    printf("\t\t"); ﻩ scanf("%c”, &Banana);    getchar();   printf("\n操作步骤如下\n”); ﻩ   if (Monkey != Box) { ﻩ   Monkey_Go_Box(Monkey, Box);   }     if (Box != Banana) ﻩ { ﻩ Monkey_Move_Box(Box, Banana); ﻩ   }       Monkey_On_Box(); ﻩ     Monkey_Get_Banana();     printf(”\n"); ﻩ   getchar(); } 五、 实验结果相关截图 六、心得体会      通过本次实验,我初步了学会了使用VC得新建工程,并且进行简单得程序编写。此外我还学会如何使用一些谓词来解决生活中得一些简单问题,并且用VC编程给出具体得操作步骤,感觉对VC编程有了新得认识。在实验中我也遇到过许多问题,比如在我写完代码进行编译时总就是会出现一个错误“ fatal error C1010: 在查找预编译头时遇到意外得文件结尾,就是否忘记了向源中添加“#include ‘stdafx、h’”关于这个错误我我问了几个同学得不出答案后,我决定通过上网查找,最终找到了解决方法,需要在该项目得每一个cpp结尾得文件属性中设置不使用预编译头即可。在这个过程中也锻炼了自己解决问题得能力。 人工智能课内实验报告 实验2:编程实现简单动物识别系统得知识表示 学 院: 自动化学院       班 级: 智能1501      姓   名: 刘少鹏(33)    学    号:  06153034        日   期: 2017-3—13 10:15—12:00    实验2:编程实现简单动物识别系统得知识表示 一、实验目得 1、理解与掌握产生式知识表示方法; 2、能够通过VC编程语言实现产生式系统得规则库。 二、实验内容 1、以动物识别系统得产生式规则为例; 2、用选定得编程语言建造规则库与综合数据库,并能对它们进行增加、删除与修改操作. 三、 实验步骤 1、 确定需要识别得动物及其属性 本次实验得简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟与信天翁。 2、 建立识别七种动物识别系统得规则 3、 选定编程语言并确定综合数据库与规则库结构 (1) 选用C语言作为编程语言   (2)综合数据库得建立 (3)规则库得建立 四、程序源代码 #include 〈iostream〉 #include <string> using namespace std; struct RULESﻩﻩ ﻩ {    int count; ﻩ char pre[255]; ﻩ    char back[255];  int mark; }; void check(); RULES r[100] = { ﻩ   { 1,”有毛发","哺乳动物",0 }, ﻩ //所有规则静态数据库 ﻩ     { 1,”有奶",”哺乳动物",0 }, ﻩ     { 1,"有羽毛”,”鸟",0 }, ﻩ      { 2,”会飞&下蛋&","鸟",0 },       { 1,”吃肉","食肉动物”,0 }, ﻩ       { 3,”有锋利得牙齿&有爪&眼睛盯着前方&”,"食肉动物”,0 }, ﻩ       { 2,"哺乳动物&有蹄&”,”有蹄类哺乳动物”,0 }, ﻩ     { 2,”哺乳动物&反刍&”,”有偶蹄类哺乳动物”,0 }, ﻩ     { 4,”哺乳动物&食肉动物&黄褐色&有暗斑&",”金钱豹",0 },     { 4,"哺乳动物&食肉动物&黄褐色&黑色条纹&”,"老虎”,0 },     { 4,"有蹄类哺乳动物&有长脖子&有长腿&有暗斑&","长颈鹿",0 }, ﻩ    { 2,”有蹄类哺乳动物&黑条纹&","斑马",0 }, { 5,"鸟&不会飞&有长脖子&有长腿&黑白色&","鸵鸟",0 }, ﻩ     { 4,"鸟&不会飞&会游泳&黑白色&",”企鹅”,0 },    { 2,"鸟&会飞&","信天翁”,0 }, ﻩ     { 1,”反刍","哺乳动物",0 } }; int number; int m; int cat = 15; int a; int length;ﻩﻩ ﻩ //输入得事实长度 string f[255]; ﻩﻩﻩ//输入得事实数组 void input() {   while (1)      { ﻩ cat++; cout 〈〈 ”number" <〈 endl; ﻩ cin 〉> r[cat]、count;  cout 〈< "输入事实,两种以上得事实请在每个事实后加上‘&’符号" 〈< endl;  cin 〉> r[cat]、pre; ﻩ   cout 〈< ”输入结果” 〈〈 endl; cin >〉 r[cat]、back; ﻩﻩ r[cat]、mark = 0; ﻩﻩ  while (1) ﻩ  { ﻩﻩ cout << ”输入“1"继续添加规则,输入“2”查瞧规则库" 〈< endl; ﻩﻩﻩint p; ﻩcin 〉> p; ﻩﻩif (p == 1) ﻩﻩ { ﻩ ﻩ input(); ﻩﻩﻩ} ﻩ else ﻩﻩﻩ{ ﻩ if (p == 2) ﻩﻩ { ﻩﻩ ﻩ check(); ﻩ } ﻩ ﻩﻩelse ﻩ ﻩ { ﻩ ﻩcout <〈 "输入错误,重新输入" 〈〈 endl; ﻩﻩﻩﻩ} ﻩﻩﻩ } ﻩ     }   } }      void delate() { cout 〈< "输入要删除得条数" 〈< endl; ﻩ   int bar; ﻩ  cin >> bar;    for (int t = 0; t 〈= cat; t++) ﻩ   { ﻩ r[bar — 1] = r[bar]; bar++; } ﻩ  cat——; ﻩ   check(); } void check() { cout 〈< endl <〈 ”规则库如下” 〈< endl; for (int i = 0; i 〈= cat; i++) ﻩ { cout << i + 1 << ”、” << "由" 〈〈 r[i]、pre 〈< ”可得" 〈< r[i]、back <〈 endl; } ﻩ  cout << endl; ﻩ  while (1)   { cout <〈 ”输入“1”继续添加规则,输入“3”删除选定得规则" <〈 endl; ﻩ cin >> m; ﻩﻩ if (m == 1) ﻩ { ﻩ input(); } ﻩﻩ else ﻩ  { ﻩ if (m == 3) ﻩ ﻩdelate(); } ﻩ  } } int find_rule(int s) ﻩ//查找规则库中就是否还有可使用得规则 { ﻩfor (int i = 0; i <= 15; i++) ﻩﻩs = s*r[i]、mark; //cout<〈”find_rule结果”<<s<<endl; ﻩreturn s; } int pare1(RULES r)  //当前提条件为1时 { int j = 0, i = 1; string str, str2; str = r、pre; while (i 〈= length) ﻩ{ ﻩ if (f[i] == str) ﻩ { ﻩ str2 = r、back; f[length + 1] = str2;ﻩ //加入事实库 ﻩﻩﻩlength++; ﻩ //事实库得长度加1 ﻩ ﻩr、mark = 1; ﻩﻩ//标记规则已使用过 ﻩﻩ break; ﻩ} else ﻩ ﻩi++; } ﻩreturn r、mark; } int pare2(RULES r) ﻩ//前提条件不为1 { string b[10]; string str, str2; ﻩint i, j = 1, num = 0; ﻩint a = 0; str = r、pre; ﻩfor (i = 0; i != 10; ++i)  //转换数组 ﻩ{ b[i] = ”"; } ﻩfor (i = 0; i != str、length(); ++i) ﻩ{ ﻩﻩif (str、at(i) != '&') { ﻩﻩﻩb[j] += str、at(i); ﻩ} ﻩﻩelse ﻩ { j++; ﻩ } ﻩ} ﻩi = 1; ﻩwhile (i <= r、count) { ﻩfor (j = 1; j != length + 1; j++) ﻩ{ ﻩﻩ if (f[j] == b[i]) ﻩﻩﻩ{ ﻩ a += 1; ﻩﻩﻩ} ﻩ } ﻩi++; ﻩ} ﻩif (a == r、count) { str2 = r、back; ﻩﻩf[length + 1] = str2; ﻩ //加入事实库 ﻩ length++;ﻩ ﻩﻩ //事实库得长度加1 ﻩr、mark = 1; //标记规则已使用过 } ﻩreturn r、mark; } void result() { ﻩint i = 1, m = 0; while (i != length + 1) { ﻩﻩif (f[i] == ”金钱豹") ﻩ{ ﻩ cout <〈 ”该动物就是金钱豹" <〈 endl; ﻩ ﻩm = 1; ﻩ ﻩbreak; ﻩ } ﻩ else ﻩﻩif (f[i] == "老虎”) ﻩﻩ{ ﻩ ﻩ cout 〈< "该动物就是老虎" 〈〈 endl; ﻩﻩm = 1; ﻩ ﻩﻩbreak; ﻩ ﻩ} ﻩ else ﻩﻩﻩﻩif (f[i] == ”长颈鹿") ﻩ { ﻩ cout 〈< "该动物就是长颈鹿" <〈 endl; ﻩﻩm = 1; ﻩ ﻩbreak; ﻩ } ﻩﻩﻩelse ﻩ ﻩ if (f[i] == "斑马”) ﻩﻩ { ﻩ ﻩcout << "该动物就是斑马" << endl; ﻩﻩ ﻩ ﻩm = 1; ﻩ break; ﻩ ﻩ ﻩ} ﻩﻩﻩﻩelse ﻩ ﻩ if (f[i] == "鸵鸟") ﻩﻩ ﻩﻩ { ﻩ ﻩ ﻩcout 〈〈 "该动物就是鸵鸟" 〈〈 endl; ﻩﻩﻩﻩ ﻩm = 1; ﻩﻩ ﻩbreak; ﻩﻩﻩﻩ } ﻩﻩﻩ ﻩelse ﻩﻩﻩ ﻩﻩﻩif (f[i] == ”企鹅") ﻩ ﻩ ﻩﻩﻩ{ ﻩ ﻩ ﻩcout 〈〈 ”该动物就是企鹅" <〈 endl; ﻩﻩﻩ m = 1; ﻩﻩ ﻩ break; ﻩ ﻩ ﻩﻩ} ﻩﻩ ﻩﻩelse ﻩﻩ ﻩﻩﻩ ﻩif (f[i] == "信天翁") ﻩ ﻩﻩ ﻩﻩ { ﻩ ﻩ ﻩ cout << "信天翁" 〈〈 endl; ﻩﻩ ﻩﻩ ﻩm = 1; ﻩﻩ ﻩﻩﻩ ﻩ break; ﻩ ﻩ } ﻩﻩﻩﻩﻩ else ﻩ ﻩ ﻩ i++; } ﻩif (m == 0) ﻩ cout << ”没有符合得动物,请确认特征,重新输入” << endl; } void idetify() { ﻩint i = 0, u = 0; ﻩif (find_rule(u) == 0)      //如果规则库中还有未使用得规则 ﻩ{//cout〈〈"还有未使用得规则"<<endl; ﻩﻩint num = length; ﻩﻩwhile (i〈16)ﻩﻩﻩﻩﻩ//从第一条规则开始遍历 { ﻩﻩﻩif (r[i]、mark == 0)ﻩ ﻩ//如果该条规则未使用 ﻩ { if (r[i]、count == 1) ﻩ //该条规则前提数为1 ﻩﻩﻩ { ﻩﻩ u = pare1(r[i]); ﻩ if (u == 1) ﻩﻩﻩﻩﻩr[i]、mark = 1; ﻩ ﻩ if (r[i]、mark == 1) ﻩﻩﻩ{ ﻩ cout << ”使用规则" <〈 i + 1; ﻩ ﻩcout 〈〈 ”且加入得新事实为” 〈〈 r[i]、back <〈 endl; ﻩﻩﻩ } ﻩ ﻩ } ﻩ ﻩelse ﻩ ﻩ{ ﻩﻩﻩ ﻩu = pare2(r[i]); ﻩ ﻩﻩif (u == 1) ﻩ ﻩﻩ r[i]、mark = 1; if (r[i]、mark == 1) ﻩﻩ ﻩ { ﻩﻩﻩ cout << ”使用规则” << i + 1; ﻩﻩ ﻩ cout 〈< "且加入得新事实为" <〈 r[i]、back 〈< endl; ﻩﻩ } ﻩ ﻩ } ﻩ } ﻩ if (i == 15) ﻩ ﻩ{ ﻩﻩ if (num != length) ﻩ{ ﻩ ﻩﻩﻩi = 0; ﻩﻩﻩﻩﻩnum = length; ﻩ} ﻩ else ﻩﻩﻩ i = 16; ﻩ } ﻩﻩ else ﻩﻩ { ﻩ i++; ﻩ } } } ﻩelse ﻩ{ cout 〈〈 ”所有得规则都已使用” 〈〈 endl; ﻩ} ﻩresult(); } /*主函数*/ void main() { ﻩcout <〈 "******智能1501班********” 〈〈 endl; ﻩcout <〈 "******06153034**********” <〈 endl; cout <〈 ”******刘少鹏************” << endl; cout 〈< ”进行动物识别请输入7” 〈< endl; cout 〈〈 ”进行规则库操作请输入8" << endl; ﻩcin >〉 a; ﻩwhile (a == 8) {   while (1) ﻩ { ﻩﻩcout 〈〈 ”添加规则输入‘1’,查瞧已有规则输入‘2'” 〈〈 endl; ﻩ cin >> m; ﻩ if (m == 1) ﻩ{ ﻩ input(); } ﻩﻩelse ﻩ { ﻩﻩﻩif (m == 2) ﻩ { ﻩ check(); ﻩ ﻩ} ﻩ ﻩ else ﻩ ﻩcout 〈< ”输入错误请重新输入” 〈< endl; ﻩ } } }   if (a == 7) ﻩ{ int u = 0; ﻩcout 〈< "请输入动物得特征数" <〈 endl; ﻩ cin 〉〉 length; ﻩ cout << "请输入动物得特征” 〈< endl; ﻩfor (int i = 1; i 〈= length; i++) ﻩ ﻩcin 〉〉 f[i]; ﻩ idetify(); } ﻩsystem(”pause”); } 五、 实验结果相关截图 1、程序总体结构     2、 规则库操作→查瞧规则库 3、 规则库操作→添加规则→添加袋鼠规则 4、 规则库操作→删除规则→删除袋鼠规则 5、动物识别→识别长颈鹿 六、心得体会   通过本次实验我深刻得理解与掌握产生式知识表示方法,并且能够通过VC编程语言实现产生式系统得规则库.本次实验我同样遇到许多问题,我通过自己查阅资料,与同学们讨论,逐步得将自己得问题解决,在这个过程中提高了我得问题解决能力。最后因为本次实验只有对数据库有清楚得掌握,同时熟悉规则才能合理编程,因此我在平时得学习中应当加大数据库与数据结构得学习力度,提高自己得编程能力。 人工智能课内实验报告 实验3:盲目搜索求解八数码问题 学  院:     自动化学院         班   级:   智能1501        姓  名:   刘少鹏 (33)   学    号:   06153034         日 期: 2017-03—30 10:15—12:00 人工智能课内实验3:盲目搜索求解8数码问题 1、 实验目得 (1) 熟悉人工智能系统中得问题求解过程; (2) 熟悉状态空间中得盲目搜索策略; (3) 掌握盲目搜索算法,重点就是宽度优先搜索与深度优先搜索算法. 2、 实验要求 用VC语言编程,采用宽度优先搜索与深度优先搜索方法,求解8数码问题 3、 实验内容 (1) 采用宽度优先算法,运行程序,要求输入初始状态 假设给定如下初始状态S0 2  8  3 1 6 4 7 0  5     与目标状态Sg     2  1  6        4 0 8   7 5 3     验证程序得输出结果,写出心得体会。    (2)对代码进行修改(选作),实现深度优先搜索求解该问题 提示:每次选扩展节点时,从数组得最后一个生成得节点开始找,找一个没有被扩展得节点。这样也需要对节点添加一个就是否被扩展过得标志。 4 源代码及实验结果截图 (1) 实验源代码 #include 〈stdlib、h〉 #include <stdio、h> Typedef struct Node { int num[9]; //棋盘状态       int deepth; //派生得深度 g(n)           int diffnum; //不在位得数目 h(n)          int value; //耗散值 f(n)=g(n)+h(n)   struct Node * pre; ﻩ               struct Node * next;            struct Node * parent; }numNode;   /* -- end of struct numNode —— */ int origin[9]; //棋盘初始状态 int target[9]; //棋盘目标状态 int numNode_num, total_step; numNode *open, *close; //Open表与Close表 numNode *create_numNode() { ﻩ return (numNode *)malloc(sizeof(numNode)); } numNode *open_getfirst(numNode *head); //返回第一项,并从Open表中删除 void open_insert(numNode *head, numNode *item); //向Open表中按序插入新节点 void close_append(numNode *head, numNode *item); //向Close表中插入新节点 int expand(numNode *item); //扩展节点 int print_result(numNode *item); //打印结果 numNode *copy_numNode(numNode *orgin); char isNewNode(numNode *open, numNode *close, int num[9]); //就是否在Open表或Close表中 void print_num(int num[9]); //打印棋盘状态 int diff(int num[9]); //求不在位棋子得个数 void init(); //初始化,获得棋盘初始状态与目标状态 void s *a, int *b); int operate(int num[], int op); void free_list(numNode *head); //* Name: 主函數 //* Description: 程序入口 int main(int argc, char *argv[]) { //初始化Open表与Close表 ﻩ  printf(”*****智能1501****\n");   printf("*****刘少鹏******\n”); ﻩ printf("*****06153034****\n”); ﻩ open = create_numNode(); close = create_numNode(); ﻩ open-〉pre = open->next = close—>pre = close—〉next = NULL; ﻩ  init(); //由用户输入初始与目标状态 ﻩ ﻩ//初始化初始节点 ﻩ  numNode *p1; ﻩ  p1 = create_numNode(); ﻩ  p1-〉parent = NULL; ﻩ  p1—〉deepth = 0; ﻩ int i = 0;  for (i = 0; i〈9; i++) ﻩ { ﻩﻩ p1—>num[i] = origin[i]; ﻩ  } open_insert(open, p1); numNode_num = 1;  p1 = open_getfirst(open); while (p1 != NULL) { ﻩﻩ close_append(close, p1); ﻩ if (expand(p1)) ﻩreturn EXIT_SUCCESS; p1 = open_getfirst(open);  } ﻩ printf(”No solution!\n"); return EXIT_SUCCESS; }        /* -—----—--- end of function main -——--——--— */ void init() { while (1) ﻩ{ printf(”Please input opriginal status:\nFor example:123456780 stands for\n" ﻩ”1 2    3\n” ﻩ ”4    5 6\n” ﻩ ﻩ”7   8  0\n”); ﻩchar temp[10]; ﻩﻩscanf(”%s", &temp); int i = 0; ﻩfor (i = 0; i〈9 && temp[i] - ’0’ 〉= 0 && temp[i] - '0’ 〈= 8; i++) ﻩﻩ{ origin[i] = temp[i] - '0'; ﻩ } printf("Please input target status:\n”); ﻩscanf("%s", &temp); ﻩﻩint j = 0; ﻩﻩfor (j = 0; j〈9 && temp[j] - '0' 〉= 0 && temp[j] - '0' <= 8; j++) ﻩ { ﻩﻩtarget[j] = temp[j] — ’0’; ﻩ} ﻩsystem("cls"); if (i == 9 && j == 9) { ﻩ ﻩbreak; } } }     /* —--—— end of function init —-—-— */ void open_insert(numNode *head, numNode *item) { ﻩnumNode *p, *q; ﻩp = head—>next; q = head; ﻩwhile (p != NULL && item—>value 〉 p-〉value) { ﻩﻩq = p; ﻩp = p-〉next; } q—>next = item; ﻩitem-〉pre = q; ﻩitem->next = p; if (p != NULL) ﻩ{ ﻩﻩp—>pre = item; ﻩ} }    /* —-—-— end of function open_insert —--—- */ numNode *open_getfirst(numNode *head) { ﻩnumNode *p; ﻩif (head-〉next == NULL) ﻩ{ ﻩreturn NULL; ﻩ} p = head—〉next; ﻩhead->next = p->next; if (p—〉next != NULL) ﻩ{ ﻩ p—>next—〉pre = head; } p—〉pre = NULL; p->next = NULL; ﻩreturn p; } /* -—-—— end of function open_getfirst -———— */ void close_append(numNode *head, numNode *item) { ﻩitem-〉next = head—〉next; ﻩitem—>pre = head; head-〉next = item; ﻩif (item->next != NULL) { ﻩﻩitem->next—>pre = item; ﻩ} }     /* ————- end of function close_append -—-—- */ int expand(numNode *p1) { numNode * p2; int op = 1; ﻩfor (op = 1; op <= 4; op++) ﻩ{ p2 = copy_numNode(p1); ﻩﻩoperate(p2—〉num, op); if (isNewNode(open, close, p2-〉num) == ’N') ﻩﻩ{ ﻩﻩﻩp2—〉parent = p1; ﻩ p2->deepth = p1—>deepth + 1; ﻩ ﻩp2-〉diffnum = diff(p2->num); ﻩp2—〉value = p2—>deepth + p2—〉diffnum; ﻩﻩﻩif (p2-〉diffnum == 0) ﻩ{ total_step = print_result(p2); ﻩ ﻩprintf("Total step: %d\n", total_step); ﻩfree_list(open); ﻩﻩ free_list(close); ﻩ return 1; ﻩ ﻩ} ﻩﻩ else ﻩﻩﻩ{ ﻩnumNode_num++; open_insert(open, p2); ﻩﻩ } ﻩ} ﻩ else free(p2); } return 0; }   /* ——--— end of function expand -—-—- */ int operate(int m[], int op) { ﻩint blank; blank = 0; while (m[blank] != 0 && blank<9) ﻩ ++blank; if (blank == 9) ﻩﻩreturn 1; ﻩswitch (op) { case 1: /* up */ ﻩif (blank〉2) ﻩswap(m + blank, m + blank - 3); break; case 2: /* down */ ﻩﻩif (blank〈6) ﻩﻩﻩswap(m + blank, m + blank + 3); ﻩ break; ﻩcase 3: /* left */ if (blank != 0 && blank != 3 && blank != 6) ﻩ swap(m + blank, m + blank — 1); ﻩbreak; case 4: /* right */ if (blank != 2 && blank != 5 && blank != 8) ﻩﻩﻩswap(m + blank, m + blank + 1); ﻩ break; default: return 1; } return 0; } void s *a, int *b) { int c; c = *a; *a = *b; ﻩ*b = c; } numNode * copy_numNode(numNode *origin) { numNode *p; ﻩp = create_numNode(); p—>deepth = origin—〉deepth; p-〉diffnum = origin—>diffnum; ﻩp-〉value = origin-〉value; int i; ﻩfor (i = 0; i<9; i++) { ﻩ (p->num)[i] = (origin->num)[i]; } ﻩreturn p; }    /* -—-—— end of function copy_numNode ——--— */ int diff(int num[9]) { ﻩint i, diffnum = 0; ﻩfor (i = 0; i〈9; i++) ﻩif (num[i] != target[i]) ﻩ diffnum++; return diffnum; }    /* ——--— end of function diff —--—- */ char isNewNode(numNode *open, numNode *close, int num[
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服