zoukankan      html  css  js  c++  java
  • 五星填数

    图1.png

    如【图1.png】的五星图案节点填上数字:1~12,除去7和11。

    要求每条直线上数字和相等。

    如图就是恰当的填法。

    请你利用计算机搜索所有可能的填法有多少种。

    注意:旋转或镜像后相同的算同一种填法。

    请提交表示方案数目的整数,不要填写任何其它内容。

    答案:

    代码:

    #include <iostream>
    using namespace std;
    int to[10][2] = {0,1,1,2,2,3,3,4,4,0,0,2,1,3,2,4,3,0,4,1};
    bool vis[10];
    int va[10] = {1,2,3,4,5,6,8,9,10,12};
    int sum[5];
    int c;
    void dfs(int k) {
        if(k >= 10) {
            c ++;
            return;
        }
        for(int i = 0;i < 10;i ++) {
            if(vis[i] || sum[to[k][0]] + va[i] > 24 || sum[to[k][1]] + va[i] > 24) continue;
            sum[to[k][0]] += va[i];
            sum[to[k][1]] += va[i];
            vis[i] = true;
            dfs(k + 1);
            vis[i] = false;
            sum[to[k][0]] -= va[i];
            sum[to[k][1]] -= va[i];
        }
    }
    int main() {
        dfs(0);
        printf("%d",c / 10);
    }
  • 相关阅读:
    SVN
    jenkins可视化
    Tomcat
    防火墙
    keepalived
    MHA高可用
    http
    inotifywait
    DNS
    nginx
  • 原文地址:https://www.cnblogs.com/8023spz/p/10680468.html
Copyright © 2011-2022 走看看