`
ericwzc
  • 浏览: 12029 次
  • 性别: 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)

 

分享到:
评论

相关推荐

    js函数式编程

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

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

    要明白的是,从指令式编程向函数式编程的转变会很困难,因此你要做好充分的准备,并不断的努力。 scala运行于JVM之上,并且它可以访问任何的java类库并且与java框架进行互操作,scala也大量重用了java类型和类库。

    CS1804_U201814755_彭子晨_函数式编程 1

    比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

    Pragmatic.Seven.Concurrency.Models.in.Seven.Weeks.When.Threads.Unravel

    Clojure之道——分离标识与状态:编程语言Clojure是一种指令式编程和函数式编程的混搭方案,在两种编程方式上取得了微妙的平衡来发挥两者的优势。 actor:actor模型是一种适用性很广的并发编程模型,适用于共享内存...

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

    其包含 一.实验目的 三.实验内容 二. 实验设备 四.实验思考题

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

    集成式步进伺服马达 代码指令大全,实现编程

    9pound#Accumulate#用流收集数据1

    用流收集数据函数式编程相对于指令式编程的优势:只需要指出希望的结果--做什么、而不用操心执行的步骤--如何做收集器(collect)但凡要把流中的所有项目合并成

    java8源码-chapter8_fp:第8章_fp

    和指令式编程相比,函数式编程的思维方式更加注重函数的计算。它的主要思想是把问题的解决方案写成一系列嵌套的函数调用。 就像在OOP中,一切皆是对象,编程的是由对象交合创造的世界; 在FP中,一切皆是函数,编程...

    跟老齐学Python之大话题小函数(1)

    如:函数式编程、程序编程、面向对象编程、指令式编程等等为不同的编程范型。 编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式...

    如何使用 TCON 通信指令编程建立两个 S7-1500 CPU 之间的开放式用户通信.rar

    如何使用 TCON 通信指令编程建立两个 S7-1500 CPU 之间的开放式用户通信

    芝柯指令手册 便携打印机指令手册

    芝柯指令手册 便携打印机指令手册 CPCL编程手册 中英文手册

    Linux C编程一站式学习

    Linux C编程一站式学习 这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备非常Solid的C编程能力,能熟练地使用...

    爱普生机器人入门指令学习

    机器人入门指令学习,爱普生EPSON7.0rc+,里面有常用的程式开发指令

    一站式学习C编程

    一站式学习C编程 中文 你懂得 宋劲杉 北京亚嵌教育研究中心 这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之 一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备...

    松下FP手持编程器操作手册.zip

    松下FP手持编程器操作手册zip,松下FP手持编程器操作手册

    百度地图毕业设计源码-angular-seed:角基介绍

    AngularJS是建立在这样的信念上的:即声明式编程应该用于构建用户界面以及编写软件构建,而指令式编程非常适合来表示业务逻辑。框架采用并扩展了传统HTML,通过双向的数据绑定来适应动态内容,双向的数据绑定允许...

    步骤编程开发平台.zip

    选择式编程,不用记任何命令(指令)。表格式界面查看方便,理解容易。分步骤执行,可以让程序的条理更加清晰。多任务编程,多个任务可以各自同时运行。零基础:不需要懂英文代码,完全可以做到无基础使用。降成本:...

    0202年了,还没有用上Java函数式编程!!!——Lambda表达式

    ——Lambda表达式函数式编程是什么命令式编程(Imperative)声明式编程(Declarative)函数式编程(Functional)总结函数式编程的好处Lambda表达式函数式接口五种形式1.无参数2.有单个参数3.有多个参数4.实现有多行5.带...

    PHP编程网络大讲堂

    本书全面介绍PHP编程知识,全书共分4篇16章,内容包括:PHP基础入门篇(第1~4章),介绍PHP环境的搭建、PHP配置文件和指令、数据类型和流程控制语句,以及PHP下进行面向对象编程等知识;PHP数据处理篇(第5~10章)...

    基于SSE指令集的程序设计简介

    Intel公司单指令多数据流式扩展(SSEStreaming SIMD Extensions)技术能够有效增强CPU浮点运算能力Visual Studio .NET 2003提供了对SSE指令集编程支持从而允许用户在C代码中不用编写汇编代码就可直接使用SSE指 ...

Global site tag (gtag.js) - Google Analytics