动态规划练习一 移动路线

描述
×桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。
小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从
左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。
对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示:

-------------------
|(2,1)|(2,2)|(2,3)|
-------------------
|(1,1)|(1,2)|(1,3)|
-------------------

蚂蚁共有3种移动路线:
路线1:(1,1) → (1,2) → (1,3) → (2,3)
路线2:(1,1) → (1,2) → (2,2) → (2,3)
路线3:(1,1) → (2,1) → (2,2) → (2,3)
输入
输入只有一行,包括两个整数m和n(0<m+n<=20),代表方格矩阵的行数和列数,m、n之间用空格隔开
输出
输出只有一行,为不同的移动路线的数目。
样例输入
2 3
样例输出

3



思路:这个 一眼看过去 想到 递归 , (1,1) 到 (m , n ) 的路线的 个数 ,(1,1) 的方向 只能 向右 ,和 向上 , 路线的 和 等于 (1,2)+(2,1) ,依次 下去 ,一直到 x==m , y == n , 到达 这个边界之后 返回 1,  这个是 一条 路线 。


代码:
#if 1

#include<bits/stdc++.h>
using namespace std;
 int m , n ;
 int ok(int i ,int j) 
 
 {
 	return (  i == m || j == n ) ;
 	
 }
int fun(int x, int y) 
{
	
	  
	if(ok(x,y))  
	  return 1;
 else 
	 return fun(x+1,y) +fun (x,y+1) ;
	
}
int main()

{ 
    int  a[25][25] ; 

	 cin >> m >> n ;
	 
	 cout << fun(1,1) <<endl;
	 
	 
	
}

#endif 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 很高兴为你提供帮助。首先,你需要了解一些基本的编程知识,比如 HTML、CSS 和 JavaScript。然后,你可以尝试学习一些框架,如 Vue、React 或 Angular,以及一些常用的工具,如 Webpack、Babel 等。最后,你可以尝试实现一些实际的项目,以加深对前端开发的理解和实践。 ### 回答2: 当然可以!以下是一个自学前端开发的基本路线: 1. 学习HTML和CSS基础知识:HTML是用于创建网页结构的标记语言,而CSS则是用于设计网页样式的语言。可以通过在线教程,书籍或视频教程来学习这些知识。 2. 学习JavaScript:JavaScript是一种用于添加交互性和动态效果的编程语言。建议学习JavaScript的基本语法、DOM操作和事件处理。 3. 掌握响应式设计和移动端开发:学习如何使网页在不同设备上自适应并具有良好的用户体验,以及学习如何使用框架开发适用于移动设备的网页。 4. 学习前端框架和库:掌握常用的前端框架和库,如React、Vue.js和Angular等。这些框架和库可以帮助你更高效地开发复杂的前端应用程序。 5. 学习构建工具和版本控制:了解如何使用构建工具如Webpack来管理和打包你的前端代码,以及使用Git进行版本控制。 6. 学习API和后端基础知识:了解如何与后端API进行交互,并学习一些后端开发的基础知识,如HTTP协议和数据库。 7. 持续学习和实践项目:前端开发是一个不断变化和进步的领域,持续学习新技术和参与实际项目是提高自己的有效方式。 值得注意的是,自学前端开发需要付出艰辛的努力和持续的学习。建议多参与在线社区和论坛,与其他开发者交流和分享经验。另外,通过阅读相关书籍和参加线上或线下的培训课程来扩展自己的知识。 ### 回答3: 当你决定自学前端开发时,建议遵循以下路线: 1. 学习HTML和CSS基础:HTML是网页的结构,而CSS用于设计和样式。学习这两门语言将帮助你构建简单的网页。 2. 掌握JavaScript:JavaScript是前端开发中最重要的语言之一。学习JavaScript可以让你实现交互式网页,并为网页添加动态功能。 3. 学习前端框架:掌握至少一种前端框架,如React、Vue.js或Angular。这些框架可以加快开发效率,并使你能够构建复杂的单页面应用程序。 4. 学习响应式设计和移动优先开发:现代网页需要适应不同设备的屏幕尺寸。学习响应式设计和移动优先开发可以让你的网页在各种设备上都有良好的用户体验。 5. 学习版本控制:使用Git等版本控制工具进行代码管理非常重要。它使你能够跟踪你的项目的变化,并与团队成员合作。 6. 学习前端工具:了解并掌握一些常用的前端工具,如代码编辑器(如VSCode)、包管理器(如npm)、构建工具(如Webpack)等。 7. 持续学习和实践:前端技术发展迅速,你需要时刻保持学习和实践的状态。参与开源项目、阅读技术博客、参加技术会议等都是提升自己的好途径。 在学习的过程中,重要的是坚持和实践。尝试自己创建小项目,应用所学知识,并积极参与开源项目和社区讨论。通过不断地练习和实践,你将能够提高自己的前端开发技能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值