zoukankan      html  css  js  c++  java
  • 01蓝桥杯第七届 方格填数(dfs)

     

    方格填数

    如下的10个格子 
    +–+–+–+–+ 
    | # | ? | ? | ? | 
    +–+–+–+–+ 
    | ? | ? | ? | ? | 
    +–+–+–+–+ 
    | ? | ? | ? | # | 
    +–+–+–+–+

    #:不能填数字;?:需要填写数字的空格 
    填入0~9的数字。要求:连续的两个数字不能相邻。 
    (左右、上下、对角都算相邻)

    一共有多少种可能的填数方案?

    请填写表示方案数目的整数。 
    注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。 

    #include<iostream>
    #include <algorithm>  
    //#include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
    bool check()
    {
    	if (abs(a[0] - a[1]) == 1 || abs(a[1] - a[2]) == 1)return false;
    	if (abs(a[3] - a[4]) == 1 || abs(a[4] - a[5]) == 1 || abs(a[5] - a[6]) == 1)return false;
    	if (abs(a[7] - a[8]) == 1 || abs(a[8] - a[9]) == 1)return false;
    	if (abs(a[3] - a[0]) == 1)return false;
    	if (abs(a[1] - a[4]) == 1 || abs(a[4] - a[7]) == 1)return false;
    	if (abs(a[2] - a[5]) == 1 || abs(a[5] - a[8]) == 1)return false;
    	if (abs(a[6] - a[9]) == 1)return false;
    	if (abs(a[3] - a[8]) == 1)return false;
    	if (abs(a[4] - a[9]) == 1)return false;
    	if (abs(a[0] - a[5]) == 1 || abs(a[1] - a[6]) == 1)return false;
    	if (abs(a[3] - a[7]) == 1 || abs(a[0] - a[4]) == 1 || abs(a[4] - a[8]) == 1)return false;
    	if (abs(a[1] - a[5]) == 1 || abs(a[9] - a[5]) == 1 || abs(a[2] - a[6]) == 1)return false;
    	return true;
    }
    int main()
    {
    	
    	int ans = 0;
    	do {
    		if (check())
    			ans++;
    	} //while (next_permutation(a, a + 10));
    	while (next_permutation(a, a + 10));
    	cout << ans;
    }
    

      

  • 相关阅读:
    Key-Value Memory Network
    Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Clas
    Deep Memory Network在Aspect Based Sentiment方向上的应用
    Deep Memory Network 深度记忆网络
    Self Attention 自注意力机制
    Attention基本公式及其变种
    *端策略优化算法(PPO)
    Policy Gradient 算法
    一本通 农场派对
    A
  • 原文地址:https://www.cnblogs.com/passion-sky/p/8516097.html
Copyright © 2011-2022 走看看