M67的题目:情人迷宫
来源:互联网 发布:玩gta5怎么关闭网络 编辑:程序博客网 时间:2024/04/28 19:22
原题 http://www.matrix67.com/blog/archives/550一个广搜就过了。合法解:设mm从A出发,gg从B出发 mm->I gg->A mm->H gg->I mm->G gg->H mm->F->L gg->I mm->E->D gg->H->J mm->C gg->K mm->B gg->B
#include <cstdlib>#include <iostream>#include <fstream>using namespace std;const int MAXINT = 1 << 30;int n;char vc[12]; //点的颜色 int e[12]; int p[12][3]; char c[12][3]; //邻接表 const int QSIZE = 100000;int q[QSIZE][5], qf, qr, qn;int steps[12][12]; //最优化 inline void enqueue(int a, int b, int s, int prva, int prvb){ q[qr][0] = a; q[qr][1] = b; q[qr][2] = s; q[qr][3] = prva; q[qr][4] = prvb; qr++; qr %= QSIZE; qn++;}void dequeue(int &a, int &b, int &s, int &prva, int &prvb){ a = q[qf][0]; b = q[qf][1]; s = q[qf][2]; prva = q[qf][3]; prvb = q[qf][4]; qf++; qf %= QSIZE; qn--;}int main(){ ifstream fin("valentine.txt"); fin >> n; for (int i=0; i<n; i++) fin >> vc[i]; //点的颜色,C(yan) R(ed) Y(ellow) int ecount; fin >> ecount; for (int i=0; i<n; i++) e[i] = 0; for (int i=0; i<ecount; i++) //边集输入,格式为"字母1 字母2 颜色" { char u, v, tc; fin >> u >> v >> tc; u -= 'A'; v -= 'A'; p[u][e[u]] = v; p[v][e[v]] = u; c[u][e[u]] = c[v][e[v]] = tc; e[u]++; e[v]++; } fin.close(); for (int i=0; i<n; i++) for (int j=0; j<n; j++) steps[i][j] = MAXINT; qf = qr = qn = 0; enqueue(0, 1, 0, -1, -1); //start from Va and Vb int a, b, s, prva, prvb; while (qn > 0) { dequeue(a, b, s, prva, prvb); if (steps[a][b] > s) //较优移动 { cout<<char(a+'A')<<" "<<char(b+'A')<<" "<<s <<"/t("<<char(prva+'A')<<" "<<char(prvb+'A')<<")"<<endl; steps[a][b] = s; if (a == b) //合法解 { cout<<"FIND SOL AT V"<<a<<" STEP="<<s<<endl; continue; } } else //较劣移动 continue; //move a for (int i=0; i<e[a]; i++) if (c[a][i] == vc[b]) enqueue(p[a][i], b, s+1, a, b); //move b for (int i=0; i<e[b]; i++) if (c[b][i] == vc[a]) enqueue(a, p[b][i], s+1, a, b); } system("pause"); return 0;}/*valentine.txt12RYCRYCRYCYRR15A B CB C RC D YD E CE F RF G YG H CH I RI A YH J RB K YE L CF L YJ K CK L R*/
- M67的题目:情人迷宫
- 走迷宫的题目
- 一道迷宫题目的非递归解法
- 我的梦中情人
- 没有情人的情人节
- 没有情人的春节
- 情人的眼泪
- 罂粟的情人
- 没有情人的情人节
- 没有情人的情人节
- 情人,流泪的木头人
- 爸爸的情人
- 情人的百宝箱
- 我是我的情人
- 情人:)
- 情人
- 情人
- 2·14 情人&元宵节专题:半质数的个数-c#求解-英雄会在线编程题目
- javasript 基础函数
- 数据结构之链栈
- 我的新blog--msn space
- DataList嵌套,分页,点击父DataList标题在子DataList显示相关的内容,点击子DataList标题显示主要内容
- SOA 让系统像奥运五环一样环环相扣
- M67的题目:情人迷宫
- 路由器Loopback口的作用汇总
- 通过Invoke反射类的private方法
- 校内应用百家争鸣,文档Wiki仍需完善
- 构建手工编译aspjectj开发环境
- DataList控件
- 利用RewritePath和pathInfo实现URL重写及其优点
- DataList控件分页功能
- 自定义SiteMapProvide 4 Asp.net 2.0