#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<set>
using namespace std;
const int N=10;
int n,m,k;
int a[N][N];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
set<int> st;
void dfs(int x,int y,int s,int sum)//x y 是位置 s是进行了该进行第几步,sum是之前求的和
{
if(s==k)
{
st.insert(sum);
return ;
}
for(int i=0;i<4;i++)
{
int tempx=x+dx[i];
int tempy=y+dy[i];
if(tempx>=1&&tempx<=n&&tempy>=1&&tempy<=m)
{
dfs(tempx,tempy,s+1,sum*10+a[tempx][tempy]);
}
}
}
int main(void)
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
dfs(i,j,0,a[i][j]);
cout<<st.size()<<endl;
return 0;
}
【2021.5.13】3502. 不同路径数
最新推荐文章于 2024-11-04 17:55:03 发布