从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;} th{border: 1px solid gray; padding: 4px; background-color: #DDD;} td{border: 1px solid gray; padding: 4px;} tr:nth-child(2n){background-color: #f8f8f8;}
|
从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)
(0,0) ->(2,2)
0.0- >1.0 ->2.0 ->2,1 ->2,2 1
0,0->1.0->1,1 ->2.1->2.2 2
0.0 -> 1.0 ->.1,1->1,2->2,2 3
0.0 -> 0.1- >0.2- >1.2 ->2.2 4
0.0 ->0.1 ->1.1->1.2->2.2 5
0.0 ->0.1 ->1.1->2.1->2.2 6
f(m,n)
|
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 1000
int m, n;
int count = 0;
int path[MAX][2]; //2表示对应要记录的横坐标和纵坐标
void fun(int x, int y,int index);
void print_path(int index);
clock_t beg,end;
int main()
{
scanf("%d%d", &m, &n);
beg=clock();
fun(0, 0, 0);
end=clock();
printf("count = %d\n", count);
printf("time = %d\n", end-beg);
system("pause");
return 0;
}
//搜索算法
void fun(int x, int y,int index)
{
path[index][0] = x;
path[index][1] = y;
if (x == m && y == n)
{
count++;
print_path(index);
return;
}
else if (x > m || y > n)
return;
fun(x + 1, y,index + 1);
fun(x, y + 1,index + 1);
}
void print_path(int index)
{
int i;
for (i = 0; i < index; i++)
printf("(%d,%d) -> ", path[i][0], path[i][1]);
printf("(%d,%d)\n", path[i][0], path[i][1]);
}
|
|
#include<stdio.h>
#include<stdlib.h>
int fun(int m,int n)
{
if(m==0&&n==0)
{
return 0;
}
else if(m==0||n==0)
return 1;
else
return (fun(m-1,n)+fun(m,n-1));
}
void main()
{
int m,n,sum;
while( printf("请输入m,n:"), scanf("%d %d",&m,&n)!=EOF)
{
sum=fun(m,n);
printf("一共%d种走法\n",sum);
}
system("pause");
}
|
从(0,0)到(m,n),每次走一步,只能向上或者向右走,有多少种路径走到(m,n)的更多相关文章
- 小明有5本新书,要借给A、B、C三位小朋友 若每人每次只能借一本,则可以有多少种不同的借法?
/* 问题描述: 小明有5本新书,要借给A.B.C三位小朋友, 若每人每次只能借一本,则可以有多少种不同的借法? 问题分析: 本题属于数学当中最常见的排列组合问题, 即求从5个数当中取3个不同数的排列 ...
- 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- Eclipse+maven+scala2.11.8+spark2.0.0的环境部署
主要在maven-for-scalaIDE纠结了,因为在eclipse版本是luna4.x 里面有自己带有的maven. 根据网上面无脑的下一步下一步,出现了错误,在此讲解各个插件的用途,以此新人看见 ...
- (学)解决诡异的 Exception type: SocketException 127.0.0.1:80
许久不发博了,老杨听完故事让我持续写一下“十万个为什么” 一.背景: 昨天我们亲密的战友HH刘老板亲临现场,指出我们协用的一个项目,客户方面反馈手持终端系统不定期“卡死”,要我们安排人飞到广州驻场解 ...
- 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解
关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- Nexus3.0.0+Maven的使用(三)
这章主要讲怎么和Maven做集成,集成的方式主要分以下种情况:代理中央仓库.Snapshot包的管理.Release包的管理.第三方Jar上传到Nexus上 1 代理中央仓库 只要在PMO文件中配置 ...
- MySQL 8.0.0 版本发布,亮点都在这了!
导读 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开 ...
- VS2013安装oepncv2.4.10 以及opencv 3.0.0
Author:Maddock Date:2014.12.27 …………………………………………………………………………………………………… PS: VS2013 + OPENCV 3.0.0 的安装, ...
- CentOS7安装配置redis-3.0.0
一.安装必要包 yum install gcc 二.linux下安装 #下载 wget http://download.redis.io/releases/redis-3.0.0.tar.gz tar ...
随机推荐
- Redis学习笔记(一)关于在windows64位环境下的安装学习使用
前言 由于工作需要,目前我正在学习使用Redis.我当时学习Redis就从网上下载了点资料就开始学习了.入门看的是<REDIS入门指南>,这本书个人觉得很适合新手用来学习接触.根据书上的引 ...
- HDFS Architecture
http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html Introduction Ha ...
- jquery tips简易使用方法 新手必看
使用jquery1.12.4以上版本 使用jquery插件 tips .beg-pull-right 点击时的选择器 在这里写的是一个类选择器 记得引入jquery $(".beg-pu ...
- Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解
上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定 ...
- JavaScript(六)函数
函数的声明方式 function name () {} 函数声明 var name = function(){} 函数表达式 所有函数都有返回值 未return 的函数 返回值 是 unde ...
- python中的深拷贝和浅拷贝理解
在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用.以下分两个思路来分别理解浅拷贝和深拷贝: 利用切 ...
- linux下使用 FreeRDP 连接 Windows 远程桌面(转)
这是一种最简单的使用方法,转载自http://wenzhixin.net.cn/2014/03/16/ubuntu_xfreerdp 简介 FreeRDP 是一款开源的远程桌面系统,支持多种平台, 在 ...
- 前端学习:html基础学习二
3.文档设置标记上-格式标记(主要内容标记<br><p><center><pre><li><ul><ol><d ...
- 基础Linux命令总结
简单命令Linux ls 列出当前文件目录下的文件(只显示文件名) pwd 显示当前操作的路径 cd 跳转路径 ls -a 可以把隐藏的文件显示出来 ,另外,创建隐藏文件的命令是 touch.123. ...
- Flask中的单例模式
1,基于文件的单例模式: import pymysql import threading from DBUtils.PooledDB import PooledDB class SingletonDB ...