地宫取宝
#include<iostream> using namespace std; int n,m,k; long long ans; int data[50][50]; void dfs(int x,int y,int max,int cnt){ if(x==n||y==m) return ; int cur=data[x][y]; if(x==n-1&&y==m-1){ if(cnt==k) ans++; if(cnt==k-1&&cur>max) ans++; } if(cur>max){//可以取 dfs(x,y+1,cur,cur+1); dfs(x+1,y,cur,cur+1); } dfs(x,y+1,max,cnt);//不取 dfs(x+1,y,max,cnt); } int main(){ cin>>n>>m>>k; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>data[i][j]; } } dfs(0,0,-1,0);//第一个点的价值可能是0 cout<<ans<<endl; return 0; }