思路:这题棋盘DP或者搜索,或者暴力都可以,因为棋盘比较小。
这里用的双向dfs。
#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #define mem(a,b) memset(a,b,sizeof(a)) #define lson i<<1,l,mid #define rson i<<1|1,mid+1,r #define llson j<<1,l,mid #define rrson j<<1|1,mid+1,r #define INF 0x7fffffff typedef long long ll; typedef unsigned long long ull; using namespace std; int n,a[10][11],Max; void dfs2(int i,int j,int sum) { if(i==1&&j==1) Max=max(Max,sum); else { if(i>1&&a[i-1][j]!=-1) dfs2(i-1,j,sum+a[i][j]); if(j>1&&a[i][j-1]!=-1) dfs2(i,j-1,sum+a[i][j]); } } void dfs1(int i,int j,int sum) { if(i==n&&j==n) a[1][1]=0,dfs2(n,n,sum); else { int cnt=a[i][j];a[i][j]=-1; if(i