思路
简单来说就是dfs存到set里面,最后输出一下set里面的元素个数就可以了
代码
#include<bits/stdc++.h>
using namespace std;
int cnt;
int a[100][100];
int n,m,k;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
set<int> b;
void cal(int x,int y,int step,int num)
{
num=num*10+a[x][y];
if(step==k)
{
b.insert(num);
return;
}
for(int i=0;i<4;i++)
{
if(x+dx[i]<1||x+dx[i]>n||y+dy[i]<1||y+dy[i]>m)continue;
cal(x+dx[i],y+dy[i],step+1,num);
}
}
int main()
{
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++)
{
cal(i,j,0,0);
}
}
for(auto l:b)
{
cnt++;
}
cout<<cnt;
return 0;
}