zoukankan      html  css  js  c++  java
  • 数字排列


    今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
    要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

    17126425374635

    当然,如果把它倒过来,也是符合要求的。

    请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

    注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。

    答案:

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    char ans[15];
    bool vis[15];
    void dfs(int k) {
        if(k > 7) {
            if(ans[0] == '7' && ans[1] == '4') puts(ans);
            return;
        }
        for(int i = 0;i + k + 1 < 14;i ++) {
            if(vis[i] || vis[i + k + 1]) continue;
            vis[i] = true;
            vis[i + k + 1] = true;
            ans[i] = '0' + k;
            ans[i + k + 1] = '0' + k;
            dfs(k + 1);
            vis[i] = false;
            vis[i + k + 1] = false;
        }
    }
    int main() {
        ans[14] = 0;
        dfs(1);
    }
  • 相关阅读:
    bzoj 1503
    bzoj 1193 贪心+bfs
    bzoj 1798 线段树
    Codeforces 804D Expected diameter of a tree
    bzoj 1208
    bzoj 3224
    HDU 5115 区间dp
    hihocoder #1162 矩阵加速dp
    分块入门
    bzoj 1036 树链剖分
  • 原文地址:https://www.cnblogs.com/8023spz/p/10634166.html
Copyright © 2011-2022 走看看