计蒜客--方格选数

AC代码:

#include<stdio.h>
int a[5][5]={3,4,5,7,6,6,2,8,4,12,7,12,4,8,3,1,9,5,10,7,8,5,6,5,2};
int vis[5][5]={0};
int dir[4][2]={{0,1},{0,-1,},{1,0},{-1,0}};
int max=0;
void dfs(int x,int y,int sum,int count){
    if(max<count){
        max=count;
    }
    vis[x][y]=1;
    for(int i=0;i<4;i++){
        int tx=x+dir[i][0];
        int ty=y+dir[i][1];
        if(tx>=0&&ty>=0&&tx<5&&ty<5&&!vis[tx][ty]&&sum+a[tx][ty]<=24){
            vis[tx][ty]=1;
            dfs(tx,ty,sum+a[tx][ty],count*a[tx][ty]);
            vis[tx][ty]=0;
        }
    }

}
int main(){
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            dfs(i,j,a[i][j],a[i][j]);
        }
    }

    printf("%d",max);
    
    return 0;
}
原文地址:https://www.cnblogs.com/pythonbigdata/p/8748424.html