1 条题解
-
0
C++ :
#include <iostream> using namespace std; char a[150][150]; int r[150][3]; int n; void show(int k){ for(int i = 1;i < k;i++){ cout<<"("<<r[i][1]<<","<<r[i][2]<<")->"; } cout<<"("<<r[k][1]<<","<<r[k][2]<<")"<<endl; } //从x、y点开始逐步探测 void num(int x,int y,int k){ r[k][1] = x; r[k][2] = y; a[x][y] = '1';//探测过的点,设置为不可探测,防止重复的探测 if(x == n && y == n){ show(k); }else{ //左、上、右、下探测,且不越界 if(y - 1 >= 1 && a[x][y - 1] == '0') num(x,y - 1,k+1); if(x - 1 >= 1 && a[x - 1][y] == '0') num(x-1,y,k+1); if(y + 1 <= n && a[x][y + 1] == '0') num(x,y + 1,k+1); if(x + 1 <= n && a[x + 1][y] == '0') num(x+1,y,k+1); } } int main(){ int i,j; cin>>n; //0表示能走,1表示不能走 for(i = 1;i <= n;i++){ for(j = 1;j <= n;j++){ cin>>a[i][j]; } } num(1,1,1); }
- 1
信息
- ID
- 2351
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者