`
ericwzc
  • 浏览: 12551 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

指令式编程

 
阅读更多

碰到一个问题时,观察分析其中的规律,将这些重复的步骤总结出来,并设好终止条件, 然后用程序语言表达出来,就成了一种解决方案。

 

小题目: 回子型遍历矩阵, 示例:A B C K M N J H G D E F

 

A  B  C  K

D  E  F  M

G  H  J  N

 

可以用程序模拟来模拟这个过程,打印出访问顺序。

 

从左到右: A B C K  上边界下移

从上到下: M N        右边界左移

从右到左: J H G      下边界上移

从下到上: G D        左边界右移

 

从左到右: E F

...

 

用坐标系来模拟一下这个就够了,假设左边界坐标为一,上边界坐标也为一

 

   1   2   3   4

1  A  B   C   K

2  D  E   F   M

3  G  H   J   N

 

#include <iostream>

int minX, maxX, minY, maxY;

void print(int x, int y)
{
    std::cout << "("<< x << "," << y << ")" << std::endl;
}

int l2r()
{
    if(minX > maxX){
        return 0;
    }
    for(int j = minX;j <= maxX; j++){
        print(j, minY);
    }
    return ++minY;
}

int t2b()
{
    if(minY > maxY){
        return 0;
    }
    for(int j = minY; j <= maxY; j++){
        print(maxX, j);
    }
    return --maxX;
}

int r2l()
{
    if(maxX < minX){
        return 0;
    }
    for(int j = maxX; j >= minX; j--){
        print(j, maxY);
    }
    return --maxY;
}

int b2t()
{
    if(minY > maxY)
    {
        return 0;
    }
    for(int j = maxY; j >= minY; j--)
    {
        print(minX, j);
    }
    return ++minX;
}

void driver(int x, int y)
{
    minX = minY = 1;
    maxX = x;
    maxY = y;

    while(l2r() && t2b() && r2l() && b2t()){}
}

int main()
{
    driver(4,3);
    return 0;
}

 

结果如下:

 

(1,1)
(2,1)
(3,1)
(4,1)
(4,2)
(4,3)
(3,3)
(2,3)
(1,3)
(1,2)
(2,2)
(3,2)

 

分享到:
评论

相关推荐

    傻瓜函数式编程.docx

    指令式编程更接近机器执行的方式,而函数式编程更接近人类思考问题的方式,它鼓励程序员以数学思维来解决问题。 【学习函数式编程的挑战】 函数式编程的学习曲线相对较陡峭,因为它要求程序员转变思维方式,从控制...

    PLC运算处理类指令练习 编程练习 手持式编程器的使用

    本系列实验主要包括运算处理类指令的运用、条件跳转指令、子程序编程以及中断程序的应用,同时涵盖了手持式编程器的使用。以下是这些实验的具体内容和相关知识点: 实验十主要涉及运算处理类指令的运用。实验目的是...

    Scala详细总结(精辟版++)

    4. 可以使用指令式编程风格:Scala 允许你使用指令式的编程风格,但是随着你对 Scala 的深入了解,你可能会更倾向于一种更为函数式的编程风格。 Scala 开发环境: 1. Scala 解释器:Scala 解释器是 Scala 的交互式...

    js函数式编程

    函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算...和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。 和过程化编程相比,函数式编程里函数的计算可随时调用。

    scala 详细总结

    Scala支持变量声明使用val和var关键字,其中val声明的是不可变引用,推荐用于实现函数式编程,而var声明的是可变引用,通常与指令式编程风格相结合。 Scala的发展速度非常快,因此在不同的版本中可能会存在差异。...

    kuka机器人循环指令码垛编程探索.pdf

    以简简单重叠式2×2×2码垛为例,用while指令编程。物料尺寸为200×150×100,单层摆放见图l所示,物料间隙为5mm。 在编程过程中,需要定义变量x、y、z来表示机器人的位置,使用while指令来控制机器人的运动。例如...

    三菱PLC步进指令SFC编程方法功能指令表ppt课件.ppt

    方便指令是PLC编程中的一种简洁的编程方式,包括置初始状态、数据搜索、绝对值式凸轮顺控、增量值式凸轮顺控、示教定时器、特殊定时器、交替输出、斜坡信号等。 外部设备控制是PLC编程中的一方面,包括段解码、带...

    外文文献-自动化制造系统关于PLC-5600字.docx

    除了梯形逻辑,还有其他编程方法,如指令式编程(图1.6所示)。这种编程方式通过指令序列来表达逻辑,每一行指令对应PLC内部的逻辑操作,逐行执行以实现控制功能。 综上所述,PLC在自动化制造系统中的应用广泛,其...

    特性-声明式编程

    总之,声明式编程借助C#的特性,使得开发者能够以更加直观和声明性的方式描述代码的意图,而不仅仅是指令。这种编程方式提高了代码的可读性和可维护性,同时也简化了诸如元编程、AOP、DI等复杂编程任务的实现。通过...

    对话式编程用户手册.rar

    对话式编程环境通常包括一个交互界面,用户可以在其中输入自然语言指令,系统会实时反馈执行结果。这些环境可能支持多种编程语言,并提供丰富的API和库,以满足不同项目的需求。 5. **对话式编程的挑战** - **...

    集成式步进伺服马达SCL语言指令可编程

    ### 集成式步进伺服马达SCL语言指令可编程 #### 一、概述 集成式步进伺服马达是一种将步进电机与驱动器集成在一起的高性能驱动装置,它结合了传统步进电机的优势与现代伺服系统的灵活性,为工业自动化提供了更加...

    三菱 PLC的基本指令、步进指令及编程-GOOD.ppt

    三菱 PLC 是日本三菱电机株式会社生产的一种高性能 PLC,具有高可靠性、高速处理能力和强大的编程能力。 第一部分:基本指令 基本指令是 PLC 的基本操作指令,用于完成逻辑操作、数据处理和输出控制等功能。三菱 ...

    C# 的函数编程详解

    函数式编程是一种编程范式,它强调使用函数作为核心构建块,将计算视为函数的组合,而不是状态的变化或指令的序列。近年来,由于其简洁、可读性强和易于并行处理的特点,函数式编程在IT行业中越来越受欢迎。C#作为...

    Rob Farber - Parallel Programming with OpenACC-Morgan Kaufmann (2016)(1).pdf

    OpenACC是一种高级指令式编程模型,用于在图形处理单元(GPU)和其他加速器上进行并行编程。该技术允许程序员通过在代码中添加编译器指令来指定需要加速的计算部分。OpenACC旨在简化并行编程,它能够提供GPU加速的...

    指令字典2005,各种编程语言指令查询

    《指令字典2005》是一款专注于编程语言指令查询的资源工具,它涵盖了各种编程语言的指令集合,为程序员提供了便捷的查询服务。在编程领域,指令是构成程序的基本元素,不同编程语言有着各自独特的指令系统,这些指令...

    FX系列可编程控制器及指令系统

    学习FX系列PLC,不仅要掌握基本的编程概念,还要理解这些指令如何在实际应用中组合使用,以实现复杂的控制任务。 在工作原理上,FX系列PLC遵循继电器逻辑的模型,但其执行速度远超传统的继电器系统。PLC通过扫描...

    33编程范式游记(4) - 函数式编程1

    函数式编程的核心思想是将计算视为一系列函数调用的组合,而不是一系列指令的执行。 【λ演算与函数式编程】 λ演算是函数式编程的基础模型,它允许定义和应用无参函数,以及通过λ表达式表示函数。在这个系统中,...

    JavaScript 函数式编程 (英文版)

    JavaScript函数式编程是一种编程范式,它强调将计算视为对数据进行操作的纯函数,而不是通过改变状态或显式指令来控制程序流程。在JavaScript中,函数式编程可以帮助我们写出更简洁、可读性强且易于测试的代码。下面...

Global site tag (gtag.js) - Google Analytics