当前位置: 首页 > news >正文

电台网站建设要求/网络营销策划书

电台网站建设要求,网络营销策划书,香港网购网站,自建企业网站模板下载海龟制图是一个经典的题目,是要编写一个输入命令,让海龟按命令前进的程序 。 一、题目描述 在小学生中很流行的徽标语言使乌龟图形的概念声名远播。 想象一下,一只机械乌龟在C 程序的控制下在房间里走动。 乌龟在上下两个位置之一中握住笔。…

海龟制图是一个经典的题目,是要编写一个输入命令,让海龟按命令前进的程序 。

一、题目描述

    在小学生中很流行的徽标语言使乌龟图形的概念声名远播。 想象一下,一只机械乌龟在C ++程序的控制下在房间里走动。 乌龟在上下两个位置之一中握住笔。当笔向下时,乌龟会在移动时追踪形状。 当笔在上面时,乌龟可以自由移动,而无需书写任何东西。 在此问题中,您将模拟乌龟的操作并创建一个计算机化的画板。请使用初始化为false的20 x 20阵列地板。 从包含它们的数组中读取命令。 始终跟踪乌龟的当前位置以及笔当前处于向上还是向下。 假定乌龟总是用笔向上从地板的位置(0,0)开始。 图中显示了程序必须处理的一组乌龟命令。 

     这里写图片描述

二、具体实现如下:

#include <iostream>
#include <iomanip>
using namespace std;
int matrix[100][100]={0},n=0,d=0,x=0,y=0;
void move(int);
void print();
int main()
{int command;while(cin>>command&&command!=0){switch(command){case 2:n=1;break;             //摁下笔,行走有墨迹case 1:n=0;break;             //提起笔,行走无墨迹case 3:move(3);break;         //向右转case 4:move(4);break;         //向左转case 5:move(5);break;         //向前走case 6:print();break;default: cout<<"wrong!";}}return 0;
}void move(int command)
{int a,b,dir[4][2]={0,1,1,0,0,-1,-1,0};int t[8]={1,2,3,0,3,0,1,2};char comma;if(command!=5)                        //处理摁下3, 然后5,10的情况cin>>a>>comma>>b;elsecin>>comma>>b;                    //处理5,10的情况if(command!=5)d=t[command&4|d];                 //解决方向问题//具体的推导可以使用状态图转换,见下else d=d;for(int i=0;i<b;i++){if(matrix[x][y]==0)matrix[x][y]=n;if(i<b-1){x+=dir[d][0];y+=dir[d][1];}}
}void print()
{for(int i=0;i<25;i++){for(int j=0;j<50;j++){if(matrix[i][j]==0)cout<<"  ";else cout<<" *";}cout<<endl;}
}

 关于这里的方向转换问题,可以用状态转换图来更好的归纳

 首先我们先来定义方向:

图片无效

 注意这里x,y的情况跟我们熟悉的x是水平轴,y是垂直轴的情况不一致。这里x代表行,所以它的方向是垂直的。

然后画出状态转换图

图片无效

 画出状态转换图之后,其实我们可以用一大串的if else语句来实现方向转换功能,这里用数组把方向转换对存起来,效率会更高,该方法有些以空间换时间的意味。

正如上面所描述的意义,我们根据转换图先画出方向转换的关系,然后把这些关系以键值对的方式用map存起来,因为数组又可以理解成是键是下标、值是内容的map,所以可以用数组简化存储。

上面的图只举了向右转的例子,同理可得向左转的数组为{3,0,1,2}

if(command!=5)d=t[command&4|d];
else d=d;

然后上面的程序就是使用了数组来实现方向转换,这里用位运算的方法使得两个转向数组合并为一个,因为:

3&4=000, 此时   d=t[command&4|d]   等价于   d = t[d], 

4&4 = 100 ,此时   d=t[command&4|d]    等价于  d = t[d+4]。

如果不想这么复杂,你也可以用下面的方法, 可以达到同样的效果,几乎相同的效率。

int t1[4]={1,2,3,0};
int t2[4]={3,0,1,2};
if(command==3)d=t1[d];
else if(command==4)d=t2[d];
elsed=d;        //command==5的情况,不用转向

 另外,你会发现,x,y的增减也是用数组存了起来,因为它也是一个:方向->(delta_x, delta_y) 的映射。

三、总结

   1.关于复杂的状态转换问题,我们可以把它存为一个键值对的映射,避免复杂的if else语句。

   2.键为小范围整数的键值对映射,转换成数组效率更好。

http://www.lbrq.cn/news/745939.html

相关文章:

  • 网站公司策划书/交换链接营销
  • 手机网站建设团队/头条新闻今日头条官方版本
  • php源码分享网/网站标题优化排名
  • centos怎么做网站/西安专业网络推广平台
  • 荆州做网站/营销培训视频课程免费
  • 做购物网站哪种服务器好/软件开发培训中心
  • 做网站服务器多大的好/百度经验官网
  • 哪类网站流量大/十大销售管理软件排行榜
  • 如何做充值网站/网站制作公司排名
  • 诚信通国际网站怎么做/淘宝seo
  • 即墨做网站的/他达那非片能延时多久
  • 门户网站建设的步骤/查询网官网
  • 更改网站名称/企业员工培训课程有哪些
  • 通化网站建设公司/神马搜索推广
  • 外包类设计网站/百度指数分析案例
  • 黑彩网站建设需要什么东西/网络销售是什么工作内容
  • 那个网站做租赁好/磁力蜘蛛种子搜索
  • 产品seo怎么优化/网站seo优化
  • wordpress 用户接口/北京网站优化推广公司
  • 邢台地区网站建设/常用的网络推广方式有哪些
  • 网站建设与网页制作案例/aso优化运营
  • 南通seo网站诊断/百度关键词搜索怎么收费
  • 网站建设 响应式 北京/建立网站流程
  • 网页游戏大全官网/济南seo排行榜
  • 整站wordpress下载/百度app关键词优化
  • 王健林亏60亿做不成一个网站/用asp做的网站
  • qq客服代码放在网站哪里/建什么网站可以长期盈利
  • 什么网站出项目找人做/微信怎么推广
  • 广州网站建设公司排行/seo流量排行榜神器
  • 盐城网页制作哪家好/快速排名优化推广手机
  • STM32学习笔记15-SPI通信软件控制
  • HarmonyOS 实战:学会在鸿蒙中使用第三方 JavaScript 库(附完整 Demo)
  • 【自动驾驶】8月 端到端自动驾驶算法论文(arxiv20250819)
  • 安装pnpm i -D @types/wechat-miniprogram报错,版本不匹配
  • 软考 系统架构设计师系列知识点之杂项集萃(129)
  • 智能汽车领域研发,复用云原生开发范式?