尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

华为OD机试 - 绘图机器 - 双指针(Python/JS/C/C++ 新系统 100分)

华为OD机试 - 绘图机器 - 双指针(Python/JS/C/C++ 新系统 100分) 华为OD机试 双机位C卷题库疯狂收录中刷题点这里专栏导读本专栏收录于《华为OD机试真题Python/JS/C/C》。刷的越多抽中的概率越大私信哪吒备注华为OD加入华为OD刷题交流群每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景发现新题目随时更新。一、题目描述绘图机器的绘图笔初始位置在原点(0,0) 机器启动后按照以下规则来进行绘制直线。尝试沿着横线坐标正向绘制直线 直到给定的终点E期间可以通过指令在纵坐标轴方向进行偏移 offsetY为正数表示正向偏移,为负数表示负向偏移。给定的横坐标终点值E 以及若干条绘制指令 请计算绘制的直线和横坐标轴以及xE的直线组成的图形面积。二、输入描述首行为两个整数N 和 E 表示有N条指令, 机器运行的横坐标终点值E接下来N行 每行两个整数表示一条绘制指令x offsetY。用例保证横坐标x以递增排序的方式出现 且不会出现相同横坐标x。三、输出描述一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内。1、输入4 101 12 13 14 -22、输出123、说明四、解题思路核心解题思想横坐标每前进一步计算与上一步之间形成的正方形面积。五、测试用例1、输入4 101 -33 24 36 -52、输出233、说明如图所示通过肉眼可以看出第一块面积是6第二块面积为1第三课面积为4第四块面积为12共23六、Python算法源码defmain():# 读取输入linelist(map(int,input().strip().split()))# N条指令Nline[0]# 终点Eline[1]# 读取N条指令arrs[]for_inrange(N):arrlist(map(int,input().strip().split()))arrs.append(arr)# 总面积area_sum0x_leftarrs[0][0]y_leftarrs[0][1]x_right0foriinrange(1,len(arrs)):x_rightarrs[i][0]y_rightarrs[i][1]# 每执行一个指令计算一次面积area(x_right-x_left)*abs(y_left)area_sumarea# 重置x左坐标x_leftx_right# 重置y左坐标y_lefty_lefty_right# 如果未到达终点最后沿X横坐标走向终点ifx_rightE:area_sum(E-x_right)*abs(y_left)print(area_sum)if__name____main__:main()七、JavaScript算法源码functionmain(){constreadlinerequire(readline-sync);// 读取第一行输入包含N和Econstlinereadline.question().trim().split( ).map(Number);constNline[0];// N条指令constEline[1];// 终点// 读取N条指令constarrs[];for(leti0;iN;i){constarrreadline.question().trim().split( ).map(Number);arrs.push(arr);}// 总面积letareaSum0;letxLeftarrs[0][0];letyLeftarrs[0][1];letxRight0;for(leti1;iarrs.length;i){xRightarrs[i][0];constyRightarrs[i][1];// 每执行一个指令计算一次面积constarea(xRight-xLeft)*Math.abs(yLeft);areaSumarea;// 重置x左坐标xLeftxRight;// 重置y左坐标yLeftyLeftyRight;}// 如果未到达终点最后沿X横坐标走向终点if(xRightE){areaSum(E-xRight)*Math.abs(yLeft);}console.log(areaSum);}// 执行主函数main();八、C算法源码#includestdio.h#includestdlib.h#includemath.hintmain(){intN,E;// 读取第一行输入包含N和Escanf(%d %d,N,E);// 用来存储指令的二维数组intarrs[N][2];// 读取N条指令for(inti0;iN;i){scanf(%d %d,arrs[i][0],arrs[i][1]);}// 总面积intareaSum0;intxLeftarrs[0][0];intyLeftarrs[0][1];intxRight0;for(inti1;iN;i){xRightarrs[i][0];intyRightarrs[i][1];// 每执行一个指令计算一次面积intarea(xRight-xLeft)*abs(yLeft);areaSumarea;// 重置x左坐标xLeftxRight;// 重置y左坐标yLeftyLeftyRight;}// 如果未到达终点最后沿X横坐标走向终点if(xRightE){areaSum(E-xRight)*abs(yLeft);}// 输出总面积printf(%d\n,areaSum);return0;}九、C算法源码#includeiostream#includecmath#includevectorusingnamespacestd;intmain(){intN,E;// 读取第一行输入包含N和EcinNE;// 用来存储指令的二维数组vectorpairint,intarrs(N);// 读取N条指令for(inti0;iN;i){cinarrs[i].firstarrs[i].second;}// 总面积intareaSum0;intxLeftarrs[0].first;intyLeftarrs[0].second;intxRight0;for(inti1;iN;i){xRightarrs[i].first;intyRightarrs[i].second;// 每执行一个指令计算一次面积intarea(xRight-xLeft)*abs(yLeft);areaSumarea;// 重置x左坐标xLeftxRight;// 重置y左坐标yLeftyLeftyRight;}// 如果未到达终点最后沿X横坐标走向终点if(xRightE){areaSum(E-xRight)*abs(yLeft);}// 输出总面积coutareaSumendl;return0;}下一篇华为OD机试真题 - 简易内存池Python/JS/C/C 双机位C卷 200分本文收录于华为OD机试真题Python/JS/C/C刷的越多抽中的概率越大私信哪吒备注华为OD加入华为OD刷题交流群每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景发现新题目随时更新。
返回列表