牛客小白月赛16
E题:dfs
E题
dfs遍历
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dir[2][2]={1,0,0,1};
int n,maxx;
int sum[1000];
int w[10][10];
void dfs(int x,int y,int wei){
if(x==n&&y==n){
sum[wei]=1;
maxx=max(maxx,wei);
}
for(int i=0;i<2;i++){
int xx=x+dir[i][0];
int yy=y+dir[i][1];
if(xx<1||xx>n||yy<1||yy>n)continue;
dfs(xx,yy,wei+w[xx][yy]);
}
}
int main(){
while(scanf("%d",&n)!=EOF){
memset(sum,0,sizeof(sum));
memset(w,0,sizeof(w));
maxx=0;
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&w[i][j]);
dfs(1,1,w[1][1]);
int ans=0;
for(int i=0;i<=maxx;i++)ans+=sum[i];
printf("%d\n",ans);
}
return 0;
}