wordpress商业网站,永春县住房和城乡规划建设局网站,网站如何做地面推广,网站ui标准1分析#xff1a;这一题每个数是否选择会影响后面的选择情况#xff0c;所以需要用一个数组来保存 所以状态为当前选到那个数#xff0c;之前选的数的和以及之前每个数是否选了 之后直接搜索即可。尽管复杂度较高#xff0c;但因为存在大量的不合法情况所以可以通过 时间复…1分析这一题每个数是否选择会影响后面的选择情况所以需要用一个数组来保存 所以状态为当前选到那个数之前选的数的和以及之前每个数是否选了 之后直接搜索即可。尽管复杂度较高但因为存在大量的不合法情况所以可以通过 时间复杂度为O2nm)
2思路从每一行一行开始从当前的当前列开始搜索当当前行搜到头最右边就换下一行然后从第一列继续搜直到搜索最下面一行然后更新答案。
3:判断当前能不能选查看当前点的四周点是不是都还没选过
//如果周围8个点都没有选择过那就可以选也可是选择不选//每点两个状态选择选or不选 if(!vis[x-1][y-1]!vis[x][y-1]!vis[x-1][y]!vis[x1][y1]!vis[x][y1]!vis[x1][y-1]!vis[x-1][y]!vis[x-1][y1]){vis[x][y]true;dfs(xx,yy,suma[x][y]);//选 vis[x][y]false;//回溯 }
4:另外每个点都右两种状态选or不选 5:ACcdoe:
#includebits/stdc.h
using namespace std;
const int N7;
int n,m,a[N][N],mmax-130;
bool vis[N][N];
void dfs(int x,int y,int sum){if(xn){//每行的搜完了over mmaxmax(mmax,sum);return;}int xxx,yyy1;//当前行下一列 if(yym){//当前x这一行已经搜完了换下一行 yy1;xxx1;}//如果周围8个点都没有选择过那就可以选也可是选择不选//每点两个状态选择选or不选 if(!vis[x-1][y-1]!vis[x][y-1]!vis[x-1][y]!vis[x1][y1]!vis[x][y1]!vis[x1][y-1]!vis[x-1][y]!vis[x-1][y1]){vis[x][y]true;dfs(xx,yy,suma[x][y]);//选 vis[x][y]false;//回溯 }dfs(xx,yy,sum); //不选
}
void solve(){mmax-130;cinnm;for(int i1;in;i)for(int j1;jm;j){cina[i][j];}dfs(1,0,0);coutmmax\n;
}
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int tt1;cintt;while(tt--)solve();return 0;
}
over~