碰到一个问题时,观察分析其中的规律,将这些重复的步骤总结出来,并设好终止条件, 然后用程序语言表达出来,就成了一种解决方案。
小题目: 回子型遍历矩阵, 示例: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)
分享到:
相关推荐
函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算...和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。 和过程化编程相比,函数式编程里函数的计算可随时调用。
要明白的是,从指令式编程向函数式编程的转变会很困难,因此你要做好充分的准备,并不断的努力。 scala运行于JVM之上,并且它可以访问任何的java类库并且与java框架进行互操作,scala也大量重用了java类型和类库。
比起指令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。
Clojure之道——分离标识与状态:编程语言Clojure是一种指令式编程和函数式编程的混搭方案,在两种编程方式上取得了微妙的平衡来发挥两者的优势。 actor:actor模型是一种适用性很广的并发编程模型,适用于共享内存...
其包含 一.实验目的 三.实验内容 二. 实验设备 四.实验思考题
集成式步进伺服马达 代码指令大全,实现编程
用流收集数据函数式编程相对于指令式编程的优势:只需要指出希望的结果--做什么、而不用操心执行的步骤--如何做收集器(collect)但凡要把流中的所有项目合并成
和指令式编程相比,函数式编程的思维方式更加注重函数的计算。它的主要思想是把问题的解决方案写成一系列嵌套的函数调用。 就像在OOP中,一切皆是对象,编程的是由对象交合创造的世界; 在FP中,一切皆是函数,编程...
如:函数式编程、程序编程、面向对象编程、指令式编程等等为不同的编程范型。 编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式...
如何使用 TCON 通信指令编程建立两个 S7-1500 CPU 之间的开放式用户通信
芝柯指令手册 便携打印机指令手册 CPCL编程手册 中英文手册
Linux C编程一站式学习 这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备非常Solid的C编程能力,能熟练地使用...
机器人入门指令学习,爱普生EPSON7.0rc+,里面有常用的程式开发指令
一站式学习C编程 中文 你懂得 宋劲杉 北京亚嵌教育研究中心 这本书最初是为北京亚嵌教育研究中心的嵌入式Linux系统工程师就业班课程量身定做的教材之 一。该课程是为期四个月的全日制职业培训,要求学员毕业时具备...
松下FP手持编程器操作手册zip,松下FP手持编程器操作手册
AngularJS是建立在这样的信念上的:即声明式编程应该用于构建用户界面以及编写软件构建,而指令式编程非常适合来表示业务逻辑。框架采用并扩展了传统HTML,通过双向的数据绑定来适应动态内容,双向的数据绑定允许...
选择式编程,不用记任何命令(指令)。表格式界面查看方便,理解容易。分步骤执行,可以让程序的条理更加清晰。多任务编程,多个任务可以各自同时运行。零基础:不需要懂英文代码,完全可以做到无基础使用。降成本:...
——Lambda表达式函数式编程是什么命令式编程(Imperative)声明式编程(Declarative)函数式编程(Functional)总结函数式编程的好处Lambda表达式函数式接口五种形式1.无参数2.有单个参数3.有多个参数4.实现有多行5.带...
本书全面介绍PHP编程知识,全书共分4篇16章,内容包括:PHP基础入门篇(第1~4章),介绍PHP环境的搭建、PHP配置文件和指令、数据类型和流程控制语句,以及PHP下进行面向对象编程等知识;PHP数据处理篇(第5~10章)...
Intel公司单指令多数据流式扩展(SSEStreaming SIMD Extensions)技术能够有效增强CPU浮点运算能力Visual Studio .NET 2003提供了对SSE指令集编程支持从而允许用户在C代码中不用编写汇编代码就可直接使用SSE指 ...