AtCoder Beginner Contest 183
作者:互联网
前两题就是憨批题,从第三道开始补题吧
一个简单的DFS。看错题意了以为是==8皇后,事实上就是个不断模拟进行搜索的过程,用个deep记录遍历深度即可。
#include <bits/stdc++.h> using namespace std; int N, K; int a[10][10]; //int b[10][10]; bool vis[10]; int ans; int num; int deep; void DFS(int x) { //终点必须是1 for(int i = 1; i <= N; ++i) { if(!vis[i] && x != i) { vis[i] = 1; deep++; ans += a[x][i]; if(deep == N) { if(ans == K && i == 1) { num++; } }else { DFS(i); } vis[i] = 0; deep--; ans -= a[x][i]; } } } int main () { cin >> N >> K; for(int i = 1; i <= N; ++i) { for(int j = 1; j <= N; ++j) { cin >> a[i][j]; } } for(int i = 1; i <= N; ++i) { if(1 != i) { vis[i] = 1; deep++; ans += a[1][i]; DFS(i); ans -= a[1][i]; deep--; vis[i] = 0; } } cout << num << endl; }
标签:AtCoder,Beginner,10,int,deep,183,DFS,两题,补题 来源: https://www.cnblogs.com/lightac/p/13982737.html