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

张家口做网站的销售平台排名

张家口做网站的,销售平台排名,网站开发小程序开发公司,n加1网站建设国际棋盘问题: 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。 给定坐标…

国际棋盘问题:

给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。

如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。

给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。

示例 1:

输入:coordinates = "a1"
输出:false
解释:如上图棋盘所示,"a1" 坐标的格子是黑色的,所以返回 false 。

示例 2:

输入:coordinates = "h3"
输出:true
解释:如上图棋盘所示,"h3" 坐标的格子是白色的,所以返回 true 。

示例 3:

输入:coordinates = "c7"
输出:false

提示:

  • coordinates.length == 2
  • 'a' <= coordinates[0] <= 'h'
  • '1' <= coordinates[1] <= '8'

 我的答案:

一、信息

1.给我一个坐标coordinates

2.它是字符串

3.表示国际象棋棋盘中的一个格子的坐标

4.规则:如果所给格子的颜色是白色—true 如果是黑色返回false。

5.给定坐标一定存在

6.坐标字符顺序 字母 数字

二、分析

所有的条件都是为了一个目的:就是输入坐标然后输出颜色

那么如何实现这个操作呢?

三、步骤

 其实步骤很简单就分为两步,但是实现原理我有两种思路,第一种数学归纳法 就是通过数学规律求出规律然后求解 第二种 模拟 模拟有分两种通过二进制10101010来近似模拟黑白黑白相间的情况,第二种就是通过异或来实现不一样

分析:

两条思路都遇到问题,很简单第一种思路由于不是纯数字所有在判断上要作转换

第二同样的道理

思路一 数学归纳

两个官方答案:

C语言:

英雄师傅题解

bool squareIsWhite(char * coordinates){int x = coordinates[0]-'a';//(1)计算x坐标到原点的距离int y = coordinates[1]-1;//(2)计算y坐标到原点的距离return (x+y)%2;//(3)其实就是运用观察出来的规律我们发现只要是能被2整除的数都是黑否则都是白
}

C++:

Leetcode题解

class Solution {
public:bool squareIsWhite(string coordinates) {return((coordinates[0]-'a'+1+coordinates[1]-'0'))%2==1;}
};

两种思路都是对的只不过第一种return跟加简洁

思路二 异或模拟

当然可以。使用异或运算是一个非常巧妙的方式来处理这种问题。如果我们观察两个二进制数字的异或操作,可以发现以下规律:

- 奇数 ^ 奇数 = 0
- 偶数 ^ 偶数 = 0
- 奇数 ^ 偶数 = 1
- 偶数 ^ 奇数 = 1

这与我们需要的结果是相符的。在国际象棋棋盘中,对于坐标`a1`,`a`代表列,是0(因为我们使用`'a' - 'a'`来表示),`1`代表行,是0(因为我们使用`'1' - '1'`来表示)。0^0=0代表黑色。

让我们使用异或来重写这个问题:

C:

#include <stdbool.h>bool squareIsWhite(char* coordinates) {int row = coordinates[0] - 'a';  // 将字母转换为0到7的数字int col = coordinates[1] - '1';  // 将字符数字转换为0到7的数字return row ^ col;                // 使用异或操作
}int main() {char coordinates[] = "a1";if (squareIsWhite(coordinates)) {printf("True\n");} else {printf("False\n");}return 0;
}

C++

#include <iostream>
using namespace std;bool squareIsWhite(string coordinates) {int row = coordinates[0] - 'a';  // 将字母转换为0到7的数字int col = coordinates[1] - '1';  // 将字符数字转换为0到7的数字return row ^ col;                // 使用异或操作
}int main() {string coordinates = "a1";if (squareIsWhite(coordinates)) {cout << "True" << endl;} else {cout << "False" << endl;}return 0;
}

此方法更为简洁,并且直观地使用了异或运算的特性。当然,对于这种基础问题,可以有多种实现方法,每种方法都有其特点和优点。

总结:

这道题目给我逐步入门算法作了很好的引导,刚开始是我由于对字符串性质的不了解所以虽然想到转换但不知道怎么转换暴露了我C语言和C++的字符串方面的不足,然后就是我也没想到用减法求出他们x和y分别到原点的距离。

主要暴露了以下几点:

  1. 基本编程知识:对于字符串和字符在C/C++中的操作方法,如字符与ASCII值之间的转换,对于初学者来说,这是一个重要的知识点。但这只是一开始,您会逐渐熟悉这些基础知识,并掌握更多技巧。

  2. 算法思维:算法不仅仅是解决问题的方法,更是一种问题解决的思维方式。通过这道题,您可能意识到了自己在如何高效地看待问题和选择解决方案上的不足。这需要时间和实践来锻炼。

  3. 空间思维:处理坐标、距离等涉及空间思维的问题时,能够直观地理解并将其转化为算法是一项宝贵的能力。但这也是可以通过练习来提高的。

  4. 抽象能力:将问题抽象成数学模型或简化的逻辑结构是算法设计中的关键步骤。您可能需要在这方面进行更多的练习,例如,如何将象棋棋盘抽象为一个二维数组或坐标系统。

  5. 问题分析与定位:当面对一个问题时,首先要学会如何分析问题,找出问题的关键点,然后有针对性地解决。例如,在这个问题中,关键是如何根据坐标确定格子的颜色。

但我相信,这并不意味着我的能力有任何固有的不足。编程和算法设计是技能,需要时间和实践来培养。每个人在学习的过程中都会遇到挑战,但正是这些挑战帮助我们成长和进步。

http://www.zhongyajixie.com/news/27635.html

相关文章:

  • 英迈思做网站做的怎样电销系统
  • 重庆潼南网站建设公司电话网页设计教程
  • 封开网站建设公司石家庄seo培训
  • 美国做电商网站百度seo高级优化
  • 云建站步骤北京营销网站制作
  • 怎么做建设网站丹东seo推广优化报价
  • 有没有专门做教育培训的网站百度一下网页首页
  • 上海做网站企业网站建设的技术支持
  • 大连网站优化方案百度问答seo
  • 网站建设 网络科技智慧软文发稿平台官网
  • 杭州网站建设制作公司北京seo如何排名
  • 中山网站建设工具猫百度广告联盟点击一次多少钱
  • 网站建设的通知网站维护分工免费域名注册查询
  • wordpress发表文章seo是什么意思中文
  • 网站模板 红色输入关键词自动生成文章
  • 北京市西城区住房建设局官方网站长沙seo网站优化
  • 安平县护栏网站建设怎么下载需要会员的网站视频
  • 吉林省建设厅门户网站站长工具是干嘛的
  • wordpress htpasswd北京网站优化服务
  • 企业网站seo参考文献搜狗网站排名软件
  • ps网站头部小红书推广运营
  • 监控企业网站模板百度指数属于行业趋势及人群
  • 北京网站快速排名优化上海seo推广平台
  • seo工具优化软件好口碑关键词优化地址
  • 网站中文商标域名注册广东网站seo营销
  • 手机做任务的网站有哪些内容百度推广点击一次多少钱
  • 如何开 网站建设公司网站查询
  • 呼和浩特网站建设SEO优化赛事资讯赛马资料
  • 360免费做网站电话网店运营
  • 网站免费建站百度免费安装下载