和poj的滑雪类似
#include<iostream> #include<cstdio> #define N 1000000007 using namespace std; int n,m,k,sum; int a[51][51]; void dfs(int x,int y,int max,int cur) { if(cur>k) return; if(x==n-1&&y==m-1) { if(cur==k||((cur==k-1)&&a[x][y]>max)) sum++; } if(x+1<n) { if(a[x][y]>max) dfs(x+1,y,a[x][y],cur+1); dfs(x+1,y,max,cur); } if(y+1<m) { if(a[x][y]>max) dfs(x,y+1,a[x][y],cur+1); dfs(x,y+1,max,cur); } } int main() { while(~scanf("%d%d%d",&n,&m,&k)) { sum=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a[i][j]; } } dfs(0,0,-1,0); cout<<sum<<endl; } return 0; }