Java教程

七对数字(第七届蓝桥杯)

本文主要是介绍七对数字(第七届蓝桥杯),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今有七对数字:两个1,两个2,两个3,…两个7,把它们排成一排。
要求,两个1之间有1个数字,两个2之间有两个数字,以此类推,两个7之间有7个数字。以下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来也是符合要求的。
请你找出另一种符合要求的排列法,并且以74 开头。
注意,只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等

#include <stdio.h>
#include <stdlib.h>

int vis[8];
void DFS(int ans[],int step)
{
    int i;
    if(step==14)
    {
        for(i=0;i<14;i++)
            printf("%d",ans[i]);
        return;
    }
    if(ans[step]!=0)      //后面的数还需要dfs
        DFS(ans,step+1);
    for(i=1;i<=7;i++)
    {
        if(!vis[i] && !ans[step+i+1] && !ans[step])   //return回来需要第三个条件否则出错
        {
            vis[i]=1;
            ans[step]=i;
            ans[step+i+1]=i;
            DFS(ans,step+1);
            vis[i]=0;
            ans[step]=0;
            ans[step+i+1]=0;
        }
    }
}
int main()
{
    int ans[14]={0};
    ans[0]=7;
    ans[1]=4;
    ans[8]=7;
    ans[6]=4;
    vis[7]=1;
    vis[4]=1;
    DFS(ans,2);
}
这篇关于七对数字(第七届蓝桥杯)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!