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);
    }
  • 相关阅读:
    RTP/RTSP编程
    makefile
    VS 2010内存泄漏检测
    Linux Shell中捕获CTRL+C
    const
    Hdu 5344
    Hdu5762
    CF1200C
    CF1200B
    CF1200A
  • 原文地址:https://www.cnblogs.com/8023spz/p/10680468.html
Copyright © 2011-2022 走看看