zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    cf 427D Match & Catch 后缀数组
    cf 244c Checkposts 强连通分量
    NSPredicate的学习
    正则表达式
    NavigationBar &UINavigationItem& toolbar方法汇总
    区块股票数量
    吃什么
    selenium
    laravel5
    vim golang dev
  • 原文地址:https://www.cnblogs.com/lightac/p/13982737.html
Copyright © 2011-2022 走看看