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; }