其他计算机图形学实验见 链接

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1010;struct node//状态结构体
{int a, b;int last;int step;
};int vis[maxn][maxn];
int A, B, C;
node q[maxn];
int front, rear;int bfs(int x, int y)
{node t;t.a = x; t.b = y; t.step = 0; t.last = -1;//q.push(t);q[front] = t;rear++;while (front < rear){//node now = q.front(); q.pop();node now = q[front]; //front++;//cout << "front=" << front << " rear=" << rear << endl;//cout << now.a << " " << now.b << endl;if (now.a == C || now.b == C){q[rear] = now;//记得保存最后这一次,否则输出的路径是错误结果的路径return now.step;}if (!vis[now.a][now.b]){vis[now.a][now.b] = 1;node temp;temp.a = 0; temp.b = 0; temp.last = -1; temp.step = 0;for (int i = 1; i <= 6; i++){//1、a有水,倒空if (i == 1 && now.a > 0){temp.a = 0;temp.b = now.b;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}//2、b有水,倒空if (i == 2 && now.b > 0){temp.a = now.a;temp.b = 0;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}//3、a未满 a灌满水if (i == 3 && now.a < A){temp.a = A;temp.b = now.b;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}//4、b未满 b灌满水if (i == 4 && now.b < B){temp.a = now.a;temp.b = B;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}//5、a有水,b没满,a倒入bif (i == 5 && now.a > 0 && now.b < B){if (now.a > B - now.b){temp.a = now.a - (B - now.b);temp.b = B;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}else{temp.a = 0;temp.b = now.a + now.b;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}}//6、b有水,a没满,b倒入aif (i == 6 && now.a < A && now.b>0){if (now.b > A - now.a){temp.a = A;temp.b = now.b - (A - now.a);temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}else{temp.b = 0;temp.a = now.a + now.b;temp.step = now.step + 1;temp.last = front;//q.push(temp);/*if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}*/}}if (!vis[temp.a][temp.b]){q[rear] = temp; rear++;}}}front++;}return -1;
}void displayPath(int i)
{if (q[i].last == -1){cout << "(" << q[i].a << ", " << q[i].b << ") -> ";return;}displayPath(q[i].last);cout << "(" << q[i].a << ", " << q[i].b << ") ->" ;
}
//void displayPath(node x)
//{//  if (x.last == -1)
//  {//      cout << "(" << x.a << ", " << x.b << ") ->";
//      return;
//  }
//  displayPath(q[x.last]);
//  cout << "(" << x.a << ", " << x.b << ") -> ";
//}int main()
{cin >> A >> B >> C;int t = bfs(0, 0);if (t != -1){cout << "Yes" << endl;cout << "操作次数为:" << t << endl;//displayPath(q[rear]);displayPath(rear);}elsecout << "Impossible" << endl;return 0;
}

计算机图形学E6——倒水问题emm和OpenGL没啥关系相关推荐

  1. [XJTUSE]计算机图形学第二章作业,使用OpenGL编程实现DDA、中点画线和Bresenham算法和中点画圆法

    首先是Windows10 + Visual Studio 2019 搭建OpenGL环境可以查看如下链接: 萌新向!!!Windows10 + Visual Studio 2019 搭建OpenGL环 ...

  2. 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    文章目录 其他计算机图形学实验 前言 思路借鉴 步骤 1.点的结构体 2. AET 活性边表.NET新边表 的结构体 3. 扫描线算法实现 4. 改变鼠标响应函数 完整代码 总结 其他计算机图形学实验 ...

  3. 【计算机图形学 】Cohen-Sutherland 直线裁剪算法 | OpenGL+鼠标交互

    文章目录 其他计算机图形学实验 前言 代码借鉴 步骤 1.点的结构体 2. 创建用于裁剪的窗口并绘制 3.画点函数 4. Cohen-Sutherland 直线裁剪算法部分 4.1 判断点所在位置,生 ...

  4. 【计算机图形学】实验报告1用OpenGL画线命令绘制一个多边构成图形或场景

    #include <GL/glut.h> #include <math.h> const int n = 200; const float R = 0.5; const flo ...

  5. 【学习日志】2022.08.19 计算机图形学、OpenGL、疼迅云游戏引擎面试、GLAD、GLFW、virtual

    计算机图形学知识图谱 .学习路线 OpenGL 概述 简介 - LearnOpenGL CN (learnopengl-cn.github.io) 当前比较流行的搭配是 freeglut + glew ...

  6. 计算机图形学三大应用领域,计算机图形学作业

    计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数(颜色.线型等)来表示图形称图形的参数表示:枚举出图形中所有的点称图形的点阵表示,简称为图像(数 ...

  7. 计算机有哪些应用领域 请举例说明,计算机图形学作业求助

    计算机图形学作业求助 计算机图形学作业题 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数(颜色.线型等)来表示图形称图形的参数表示:枚举出图形中所有的点称图形的点阵表示 ...

  8. 计算机图形学【清华大学出版社】

    计算机图形学 计算机图形系统 图形显示与生成 图形观察与交换 真是感图形生成(课本上没有,可以自行理解) 曲线曲面基础 三维几何造型(点线面体的模型构造) 第一章 相关概念 发展简况 应用领域 相关开 ...

  9. 计算机图形基础实验图形变换,北方工业大学 计算机图形学实验 几何变换

    北方工业大学 计算机图形学实验 几何变换 四.用OpenGL函数库实现几何图元旋转特效 在Nehe教程Lesson04基础上,修改程序,在屏幕上画两个三角形.两个四边形,并完成相应动画效果,三角形A绕 ...

最新文章

  1. 【Java】排序算法 之 【归并排序】 总结
  2. HDU4858 项目管理 其他
  3. ptaa乘以b_《C语言程序设计》实验作业--PTA顺序结构练习
  4. 从未如此简单:10分钟带你逆袭Kafka!
  5. 熬夜整理出40张可视化大屏模板,不敲一个代码就能直接套用
  6. 小试ImageMagik——使用篇
  7. python提示AttributeError: 'NoneType' object has no attribute 'append'
  8. SpringMVC课堂笔记
  9. java 智能一卡通系统_基于Java框架的银医一卡通系统设计
  10. 精密测量仪器的气源维护知识
  11. 18项政策奖励助力武汉加快区域金融中心建设,申报奖励以及申报流程汇总
  12. CTFshow_萌新(密码)
  13. 用手机远程控制电脑的软件 ---TeamViewer远程控制
  14. LINUX下LAMP与PHPWIND
  15. 今年今日==我的生日
  16. 我在VsCode上看基金,你呢?
  17. 深度学习中的遥感影像数据集
  18. 15.三层交换与二层交换、策略路由与路由策略
  19. Java注解和反射,Java教程马士兵全集
  20. python麦克风监听_python实时监听麦克风

热门文章

  1. zabbix agent监控主机配置
  2. MySQL---InnoDB引擎隔离级别详解
  3. Linux 添加计划任务
  4. 说说我在项目中为什么不用实体框架,如果说我在诋毁你所爱的EF,请进来.
  5. Unity3d Shader开发(三)Pass(Fog )
  6. _GUN_SOURCE宏
  7. python socket自动重连_python之tcp自动重连
  8. 明晚8点直播丨经典知识库:深入解析Oracle检查点
  9. Oracle 12c 关于密码(password)的几个新特性小结
  10. 关于查询MySQL事务阻塞信息,你还可以这样玩?