螺旋折线-蓝桥杯-算法/ C++

       我写这篇文章的时间是2018年4月2号。昨天刚结束第九届蓝桥杯比赛,这道题是C++(B组)第二道编程题。

题目描述:给一个平面直角坐标系,从原点开始画螺旋折线,规定:折线从原点开始向左出发,然后向上走,接着向右走,然后向下走,再向左走,一直循环下去,并且每个点走过且仅走过一次。并规定给一条线段长度为1,现在要你编程实现,当你给定平面上任意一点坐标时,输出这个点的距离原点的路程。比如点(0,1)的距离为3,点(2,2)的距离为16。(由于本人只记得大概题目意思,所以题目描述可能不太准确,也没有画图展示,不过如果你们会搜到这篇文章,相信你们对于题目是非常熟悉的,时间与精力有限,在此不做过多赘述,望理解)

      不知道有没有人认为这道题会用枚举或者递归来求解。当然,笔者并没有尝试这两种解法,如果你们有高效率而且容易理解的解法,欢迎你们给我留言分享。

      解这道题其实并不需要任何数据结构的知识,完全是数学与逻辑的抽象,就能描述这个过程。解题的关键:确定折线保持当前方向与转向的边界条件。应该说比较简单。(如果还有不懂的地方请结合以下代码并结合那个螺旋图分析)

     C++源代码如下:

#include "stdafx.h"
#include <iostream>
using namespace std;
int sum=1;
int fun(int x,int y,i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值