#include<iostream>usingnamespace std;int a[10][10], n =3, m =4, step, b[10], ans, book[10][10];//a表示矩阵中的数组,储存矩阵中的数字;n,m表示矩阵实际长度;step表示走的步数;b代表已经访问过数字的数组;ans表示一共可能的路径;book标记已访问的数组int nextstep[4][2]={{1,0},//向下{-1,0},//向上{0,-1},//向左{0,1}};//向右voiddfs(int x,int y,int step){if(step ==6){//当step为6时,表示第五步已经找到了完美的路径
ans++;return;}for(int i =0; i <4; i++){int nextx = x + nextstep[i][0];//表示下一步横坐标位置int nexty = y + nextstep[i][1];//表示下一步纵坐标位置if(nextx >=1&& nexty >=1&& nextx <= n && nexty <= m &&!book[nextx][nexty]&&!b[a[nextx][nexty]]){
book[nextx][nexty]=1;//代表已经走过dfs(nextx, nexty, step +1);
book[nextx][nexty]=0;}}return;}intmain(){// 请在此输入您的代码//输入矩阵int k =1;for(int i =1; i <=n; i++){for(int j =1; j <=m; j++){
a[i][j]= k++;}}for(int i =1; i <=n; i++){//遍历二维数组for(int j =1; j <=m; j++){dfs(i, j,1);//从当前位置开始执行dfs,路径长度初始化1
b[a[i][j]]=1;//当前路径标记为1,表示已经执行,接下来的dfs调用中,将不会考虑到a[i][j]}}
cout << ans+2<< endl;//dfs只会朝着一个方向遍历,所以还有2种dfs没有考虑到的状况,便是://1 a 3 4 1 2 a 4 //a a a 8 5 a a a//9 a 11 12 9 10 a 12//a为邮票的位置return0;}