在二维数组寻找两个定点的最短距离(递归)
2015-08-21 20:52
162 查看
这里我只以计算左上顶点,到右下顶点的最短距离为例
例如:
输入
2//n*n的数组
0 1
0 0
输出:
2
以下是源码:
#include<iostream>
#include<string>
#include<vector>
#include<stack>
using namespace std;
vector< vector<int> > graph;int count=0;
int f(vector< vector<int> > graph,int a, int b,int n)
{
if(a!=n||b!=n)
{
if(b!=n&&graph[a][b+1]==0)
{count++;
return f(graph,a,b+1,n);
}else
{
while(graph[a+1][b]!=0)
{
b--;
count--;
}
}
if(a!=n&&graph[a+1][b]==0)
{count++;
return f(graph,a+1,b,n);
}
}
else{return count;}
}
int main()
{ int n;
//freopen("in.txt", "r", stdin);
cout << "input the vertex num:"<< endl;
cin >> n;
vector< vector<int> >::iterator it;
for (int i = 0; i < n; ++i)
{ int count=n;
vector<int> il;
int t;
while(count--)
{
cin>>t;
il.push_back(t);
}
graph.push_back(il);
}
cout<<f(graph,0,0,n-1);
}
如果要是判断数组任意两点就需要在f()里加判断左边以及上边的语句,注意判断顺序,以及要改一下函数的形参;
例如:
输入
2//n*n的数组
0 1
0 0
输出:
2
以下是源码:
#include<iostream>
#include<string>
#include<vector>
#include<stack>
using namespace std;
vector< vector<int> > graph;int count=0;
int f(vector< vector<int> > graph,int a, int b,int n)
{
if(a!=n||b!=n)
{
if(b!=n&&graph[a][b+1]==0)
{count++;
return f(graph,a,b+1,n);
}else
{
while(graph[a+1][b]!=0)
{
b--;
count--;
}
}
if(a!=n&&graph[a+1][b]==0)
{count++;
return f(graph,a+1,b,n);
}
}
else{return count;}
}
int main()
{ int n;
//freopen("in.txt", "r", stdin);
cout << "input the vertex num:"<< endl;
cin >> n;
vector< vector<int> >::iterator it;
for (int i = 0; i < n; ++i)
{ int count=n;
vector<int> il;
int t;
while(count--)
{
cin>>t;
il.push_back(t);
}
graph.push_back(il);
}
cout<<f(graph,0,0,n-1);
}
如果要是判断数组任意两点就需要在f()里加判断左边以及上边的语句,注意判断顺序,以及要改一下函数的形参;
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- Lua中使用二维数组实例
- 浅析Ruby的源代码布局及其编程风格
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- C#中的尾递归与Continuation详解
- C#使用二维数组模拟斗地主
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- php递归创建目录的方法
- asp.net 抓取网页源码三种实现方法
- Javascript递归打印Document层次关系实例分析
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- jQuery源码分析之jQuery中的循环技巧详解
- 本人自用的global.js库源码分享
- javascript的日期对象、数组对象、二维数组使用说明
- java中原码、反码与补码的问题分析
- PHP 如何获取二维数组中某个key的集合
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享