设为首页 加入收藏

TOP

数字组合问题
2016-12-30 08:14:42 】 浏览:113
Tags:数字 组合 问题

问题描述

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

#include  
#define n 7  
int a[8];  
int m[15];  
int ok(int h)  
{  
    int i;  
    if(a[h]+h+1>14)  
    return 0;  
    for(i=1;i<=7;i++)  
    {  
        if(a[i]!=0&&i!=h)  
        {  
            if(a[h]+h+1==a[i]||a[h]+h+1==a[i]+i+1||a[h]==a[i]||a[h]==a[i]+i+1)  
            return 0;  
        }  
    }  
    return 1;  
}  
void compute(int h)  
{  
    //printf("%d\n",h);  
      
      
    int i;  
    if(h==8&&a[7]==1&&a[4]==2)  
    {  
        for(i=1;i<=7;i++)  
        {  
            m[a[i]]=i;  
            m[a[i]+i+1]=i;  
        }  
        for(i=1;i<=14;i++)  
        printf("%d\t",m[i]);  
        printf("\n");  
        return;  
    }  
    for(i=1;i<=14;i++)  
    {  
        a[h]=i;  
        if(ok(h))  
        {  
            compute(h+1);  
        }  
        a[h]=0;  
    }  
}  
int main()  
{  
    int i;  
    for(i=0;i<=14;i++)  
    {  
        m[i]=0;  
    }  
    for(i=0;i<=7;i++)  
    {  
        a[i]=0;  
    }  
    compute(1);  
    return 0;  
}

结果

\
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++编程之配置文件解析 下一篇C++虚函数逆向教程(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目