l**********1 发帖数: 415 | 1 大牛们给说说,有code最好
打印从棋盘的一个角落到另一个角落所有路径,貌似careercap上只有找一条路径的
谢了先 | d*****d 发帖数: 180 | 2 具体点,能怎么走?比如只能往左,左下,下走 还是什么方向都可以? | l*****a 发帖数: 14598 | 3 void GetPath(int size, int x,int y,vector& vec)
{
if(x==size&&y==size)
{ vector::iterator it;
for(it=vec.begin();it!=vec.end();++it) { cout<<*it; }
cout<
return;
}
if(x
vec.push_back('R');
GetPath(size,x+1,y,vec);
vec.pop_back();
}
if(y
vec.push_back('D');
GetPath(size,x,y+1,vec);
vec.pop_back();
}
return;
}
【在 l**********1 的大作中提到】 : 大牛们给说说,有code最好 : 打印从棋盘的一个角落到另一个角落所有路径,貌似careercap上只有找一条路径的 : 谢了先
| e********r 发帖数: 2352 | 4 不好意思,请问那个pop_back()的作用是什么,怎么觉得最后vec还是空的,还有这个是所有路径的吗,怎么像是先走到最右侧,然后再向下走,只有一条路径.
【在 l*****a 的大作中提到】 : void GetPath(int size, int x,int y,vector& vec) : { : if(x==size&&y==size) : { vector::iterator it; : for(it=vec.begin();it!=vec.end();++it) { cout<<*it; } : cout<: return; : } : if(x: vec.push_back('R');
| d*****d 发帖数: 180 | 5 If only two directions are allowed :
findPath(5,0,0,"");
void findPath(int n, int x, int y, String path)
{
if (x==n-1 && y==n-1)
{
System.out.println(path);
return;
}
else if (x>=n || y>=n)
{
return;
}
path+=" ("+x','+y+')';
findPath(n, x, y+1, path);
findPath(n, x+1,y, path);
} | g*******n 发帖数: 214 | 6 Mark
★ Sent from iPhone App: iReader Mitbbs Lite 7.38 | a********n 发帖数: 1287 | 7 这个是回溯。
每个点上两种走法。
个是所有路径的吗,怎么像是先走到最右侧,然后再向下走,只有一条路径.
【在 e********r 的大作中提到】 : 不好意思,请问那个pop_back()的作用是什么,怎么觉得最后vec还是空的,还有这个是所有路径的吗,怎么像是先走到最右侧,然后再向下走,只有一条路径.
| h****n 发帖数: 1093 | |
|